Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Labor am Januar 18, 2023, 15:35:41

Titel: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 18, 2023, 15:35:41
Hallo Zusammen,

ich möchte über eine Abfrage oder so, eine fest definierte Tabelle erstellen.
Anforderung:
Im Formular wird z.B. ein Auftrag angelegt mit z.B. 50 Stück.
Dann soll im Formular (Unterformular) eine Tabelle erscheinen mit genau 50 Zeilen,
welche dann vom Benutzer mit Messwerten gefüllt wird. In einem Feld werden dann die Zeilen bis 50 nummeriert.
Geht das?
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 18, 2023, 15:41:03
Hallo,
das geht zwar, wird aber so nicht benötigt.
Du kannst das Unterformular an die Tabelle mit den Messwerten binden. Die Tabelle benötigt auch einen Fremdschlüssel zum Auftrag. Im Hafo wird dann der Auftrag angezeigt. Dann trägt der Benutzer dann die Messwerte ein. In dem Zählerfeld kann man dann automatisch hochzählen.

Zeige bitte mal ein Bild des Beziehungsfensters.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 19, 2023, 13:48:16
Hallo Klaus,folgendes ist der Ist-Zustand:
Ich habe ein Formular "Messwerte eingeben" mit einem Unterformular "Messwerte"
Die Daten in Unterformular werden über eine Abfrage erzeugt. In einem Feld "Nr" wird über DomAnzahl eine forlaufende Nummer (1, 2. 3..) für jeden Datensatz erzeugt.
Wenn die Daten alle eingeben sind werden über einen Button die Daten aus der Abfrage an die Tabelle "Messwerte" angefügt. So weit ist alles i.O.
Sollte der Bedienener nach dem Anfügen feststellen, dass zu wenig Messwerte einegeben wurden, kann er zwar die Messwerte über den Auftrag abrufen, jedoch geht dann DomAnzahl nicht mehr.
Deswegen wäre es einfache eine Tabelle pro Auftrag mit definierter Anzahl von Zeilen zu erzeugen. Ein Auftrag kann bis zu 100 Datensätze haben.
Gruß
Frank
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 19, 2023, 14:54:23
Hallo,
ZitatDeswegen wäre es einfache eine Tabelle pro Auftrag
Mit Verlaub, aber das ist nicht besonders sinnvoll und dürfte der falsche Weg sein.
Du kannst in einem Unterformular einfach die Messwerte nacheinander eingeben. Bei einem neuen Messwert wird für  die LfdNr mit DMax die letzte  Nr ermittelt und 1 dazugezählt. DomAnzahl wird da gar nicht benötigt. Und die Messwerte dann erst anzufügen ist dann auch überflüssig, Du kannst über das Ufo sofort in die richtige Tabelle schreiben. Du machst das viel zu kompliziert.

Man müsste mal den Aufbau der DB kennen, ich denke da ist ohnehin Verbesserungsbedarf, daher ja die Bitte das Beziehungsbild zu zeigen. Du musst ja mindestens 2 Tabellen haben, Auftrag und Messwerte.
Aber den Wunsch nach dem Beziehungsbild hast Du ignoriert.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 19, 2023, 16:01:56
Hallo Klaus,

hier die Beziehungen und das Eingabeformular.
Beziehungen.pngFormular.png 
Wo soll ich Dmax einfügen?

Gruß
Frank
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 19, 2023, 16:21:42
Hallo,
bevor Du jetzt weitermachst, sollte erst mal das Datenmodell auf den Prüfstand.
Welche Tabelle ist denn jetzt der Auftrag ?
Die Abfrage in den Beziehungen ist falsch, in die Beziehungen kommen nur Tabellen. Es kann auch nicht sein, dass eine Tabelle und eine Abfrage auf das geliche Fremdschlüsselfeld verweisen.
Textfelder (Bearbeiter, PA) als Primärschlüssel sind ungeeignet, hier wären Autowertfelder zu bevorzugen.
Wieso gibt es in 2 Tabellen Offset?
Warum ist in den Beziehungen keine referentielle Integrität eingestellt ? RI ist unerlässlich.

Wenn man bei richtigem Datenmodell Hafo und Ufo über die Schlüsselfelder verknüpft, braucht man keinen Buchstaben VBA, das Hochzählen der LfdNr lässt sich über den Standardwert automatisieren.

Du solltest Dich mit den Grundlagen zu Access beschäftigen, die vorliegende Tabellenstruktur/Datenmodell ist ungeeignet.

https://www.access-tutorial.de/
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 19, 2023, 16:44:08
PA_Kunden ist Tabelle in der Grundlegende Daten und Berechnungen (Offset) sind.
Messwerte ist die Tabelle in der alle Messwerte von allen Aufträgen.
Jeder Auftrag hat mindesten einen Messwert. Bei jedem Auftrag muss der 1. Messwert die Nummer 1, der zweite die Nummer 2 ... haben. Der Offset wird bei PA_Kunden errechnet und in Messwerte übertragen. Die mit 1 beginnenden fortlaufenden Zahlen eines Auftrags sind für die eindeutige Zuweisung von Prüflingen notwendig.
Meine Frage war ja auch nur, kann mann eine Tabelle erzeugen mit festen Zeilenzahlen.

Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 19, 2023, 17:12:35
Hallo,
ZitatDer Offset wird bei PA_Kunden errechnet und in Messwerte übertragen.
Es ist überflüssig den zu übertragen.
Und was ist jetzt der Auftrag, ich sehe da weder eine TAbellen noch ein Feld mit Auftrag.

ZitatMeine Frage war ja auch nur, kann mann eine Tabelle erzeugen mit festen Zeilenzahlen.
Ja, das geht.
Z.B. mit einer Hilfstabelle, mit Zahlen von 1 bis z.B. 100.
Mit Hilfe dieser Tabelle kannst Du dann eine bestimmte Anzahl leerer Datensätze erzeugen.
Oder mit einer VBA Schleife in der mit einer Anfügeabfrage immer ein Datensatz angefügt wird.
Aber damit ist es ja nicht getan, es muss ja auch gleichzeitig das Fremdschlüsselfeld gefüllt werden, sonst hängen die neuen Zeilen der Tabelle in der Luft. Womit wir wieder beim völlig ungeeigneten Grundkonzept wären.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: ebs17 am Januar 19, 2023, 17:38:16
ZitatDie Daten in Unterformular werden über eine Abfrage erzeugt. In einem Feld "Nr" wird über DomAnzahl eine forlaufende Nummer (1, 2. 3..) für jeden Datensatz erzeugt.
Eine jedesmalige Berechnung in der Abfrage ist nicht brauchbar.
Wenn aber im Unterformular eingegeben wird, erfolgt das ja datensatzweise. Da kann man diese laufende Nr berechnen und eintragen.
Private Sub Form_BeforeUpdate(Cancel As Integer)
   Dim lMax As Long
   lMax = Nz(DMax("Nr", "TabelleX", "PA = '" & Me.txtPA & "'"), 0)
   If lMax < 50 Then
      If Me.NewRecord Then Me.txtNr = lMax + 1
   Else
      MsgBox "über 50"
      Me.Undo  'rückgängig
      Cancel = True  'Ereignisse verhindern
   End If
End Sub
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 19, 2023, 20:17:51
Danke Eberhard, das ist nicht was ich brauche. Im Formular ist das Feld Stück 5.
und im Unterformular sollen auch nur 5 Datensätze angezeigt werden auch wenn keine Eingaben gemacht werden. Ich brauche auch keine Nachricht oder so.
Einfach nur x Datensätze aus dem Hauptformular Stück x.

Gruß Frank
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: ebs17 am Januar 19, 2023, 22:07:51
Oft sind Lösungen nicht dazu gedacht, um blind kopiert zu werden. Man darf sie auch sinngemäß abschreiben, müsste dazu aber den Sinn in etwa realisieren. Einen Festwert kann man durchaus durch eine Variable ersetzen:
'    If lMax < 50 Then
   If lMax < Me.Parent.txtStueck Then
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 20, 2023, 13:25:42
Hallo Eberhard, ich habe stundenlang versucht, bis ich erkannt habe, dass die Anweisung ins Unterformular gehöhrt. Damit kann ich mir die Anfügeabfrage schenken. Super!!

Aber meine ursprügliche Frage war, kann mann die Tabelle im Unterformular mit Stückzahl aus dem Hauptformular vorbesetzten ohne Eingabe zu machen. Also beim öffnen des Formulars wird der Wert z.B. 5 aus dem Feld Stückzahl benutzt um im Unterformular eine Tabelle mit 5 durchnummerierte Zeilen zu erstellt ohne eine Eingabe machen zu müssen.

Gruß
Frank
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 20, 2023, 13:51:03
Hallo,
zu Deiner eigentlichen Frage habe ich Dir in #7 2 Vorschläge gemacht. Nicht gesehen ?

Und auch wenn Du es nicht hören willst, noch mal der Hinweis: Dein Vorhaben ist ersatzlos überflüssig, weil mit einem Unterformular zum Auftrag lässt sich das Ganze viel, viel einfacher erledigen. Ohne irgendetwas programmieren zu müssen.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: Labor am Januar 20, 2023, 14:36:20
Hallo Klaus, alles funktioniert wunderbar, die Aufgabenstellung und Bedingungen sind sehr viel
komplexer. Im übirgen, das unterformular ist mit dem Auftrag verknüpft!!Zu Deinem Vorschlag: wäre ein konkretes Beispiel paktischer, wie der pauschale Vorschlag.

Gruß
Frank
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: ebs17 am Januar 20, 2023, 15:05:31
ZitatZu Deinem Vorschlag: wäre ein konkretes Beispiel paktischer, wie der pauschale Vorschlag.
Wohl für Dich. Natürlich dürfen andere sich die Arbeit machen, Vorschläge auszuarbeiten und vorzulegen, um sich dann sagen zu lassen, dass das so sowieso aus Gründen xyz nicht geht.
Wenn Du verständlich und präzise beschreiben solltest, was Du machst, wäre das für Dich Mehrarbeit. Selbstredend unzumutbar für Deine wertvolle Zeit.

Zitatkann mann die Tabelle im Unterformular mit Stückzahl aus dem Hauptformular vorbesetzten
Per Anfügeabfrage kann man mehrere Datensätze gleichzeitig in die Tabelle schreiben, aus einer Zahlenhilfstabelle (https://www.ms-office-forum.net/forum/showthread.php?t=298414) kann man sich die laufenden Nummern dazu holen.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 21, 2023, 15:11:44
Hallo,
im Anhang ein konkretes Beispiel, wie ich das machen würde. Ich habe im wesentlichen die Felder aus dem Beziehungsbild übernommen, habe allerdings auch das Datenmodell angepasst. Richtige Schlüsselfelder angelegt, redundante Felder habe ich entfernt etc.
Im Formular "Erfassung" werden zunächst die PA... Daten erfasst. Im Ufo können dann die Messwerte erfasst werden, die LfdNr wird automatisch hochgezählt. Mann kann immer weitere Datensätze eingaben bis die maximale Anzahl (Stückzahl) erreicht ist. Dann wird das UFO zur weiteren Dateneingabe gesperrt.
Es sind noch verschiedene Funktionalitäten per VBA eingebaut.
DB anbei, einfach mal probieren.
Bei Fragen, bitte melden.
Titel: Re: Tabelle mit fester Anzahl von Zeilen erstellen
Beitrag von: MzKlMu am Januar 22, 2023, 00:37:15
Hallo,
hier noch das Beispiel mit Bericht.