Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: pahiti78 am Juli 14, 2012, 21:33:57

Titel: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: pahiti78 am Juli 14, 2012, 21:33:57
Hallo Zusammen,

ich habe folgendes Problem. Ich habe eine DB in der meine Trainingsfortschritte (krafttraining gespeichert werden). Beim Krafttraining macht man ja verschiedene Übungen und verschiedene viele Sätze bzw. WHd mit verschiedenen Gewichten. Ich habe dazu Tabelle "tbl_training", welche die Spalten Datum, Übung, Wiederholung und Gewicht speichert.
Ich muss jetzt jeden Satz einzeln im Formular anlegen und speichern. Ich würde gern mehrere Sätze auf einmal speichern können. Ich stell mir dies ungefähr so vor: Ich leg im Formular ein Datum und habe dann ca.10 Eingabefelder für meine Übungen, weitere 10 Felder für die dazugehöroigen Wdh und den dazugehörigen Gewichten. Ich hatte die Vorstellung die Tablle um die Spalten Übung1-Übung10, Wdh1-Wdh10, Gewicht1-Gewicht10 zu ergänzen. Da allerdings mehrere Berichte ebenfalls im Projekt integriert sind, müsste ich diese und alle Abfragen ebenfalls umschreiben.
Gibt es eine Möglichkeit dies zu umgehen. Ich würde gern die alte Tabellenstruktur beibehalten und pro Eingabe im Formlar halt 10 Datensätze mit gleichen Datum anlegen können. Hat jemand ne Idee?
Danke schonmal vorab.
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: Beaker s.a. am Juli 14, 2012, 22:25:20
Hallo pahiti,
ZitatIch würde gern die alte Tabellenstruktur beibehalten und pro Eingabe im Formlar halt 10 Datensätze mit gleichen Datum anlegen können.
Auf jeden Fall so lassen; nummerierte Spalten widersprechen den Normalisierungsregeln.
Zum Problem; lege Dir eine Hilfstabelle an, die nur eine Spalte mit durchlaufender
Nummerierung hat.
Um dann gleichzeitig n (bei Dir 10) DS auf einen Rutsch einzufügen, joinst Du diese
Tabelle in eine INSERT-Abfrage.
Luftcode:

            "INSERT INTO tbl_training( " _
                & "trainingDatum, " _
                & "Uebung, " _
                & "Wiederholung, " _
          & "SELECT " _
                & Date & ", " _
                & HerkunftUebung & ", " _     '<-- z.B. KombiFeld im Form
                & HT.Nr " _
          & "FROM tbl_training AS T " _
                & "INNER JOIN Hilfstabelle AS HT " _
                & "ON T.ID = HT.Nr" _
          & "WHERE HT.Nr <= 10"

hth
gruss ekkehard
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: pahiti78 am Juli 14, 2012, 22:34:14
Hallo Ekkehard,
danke für die Info. Was soll die Hilfstabelle bewirken? Ich kann dir nicht so richtig folgen.
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: Beaker s.a. am Juli 14, 2012, 22:50:55
Hallo pahiti,
Die bewirkt, dass automatisch 10 DS gleichzeitig eingefügt werden.
gruss ekkehard
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: pahiti78 am Juli 14, 2012, 22:57:28
Ja nach mehrfachen Lesen wurde mir halbwegs klar, worauf es hinausläuft. Kannst du mir noch schreiben, wie man eine laufende Nummer kreiert. Oder soll dies einfach über den Primärschlüssel laufen lassen?
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: pahiti78 am Juli 15, 2012, 00:08:13
Hallo Ekkehard,
wäre es auch möglich die ungebundenen Textfelder mittels SQl der Tabelle anzufügen?
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: Beaker s.a. am Juli 15, 2012, 00:50:20
Hallo pahiti,
Zitatwie man eine laufende Nummer kreiert. Oder soll dies einfach über den Primärschlüssel laufen lassen?
Du meinst per Autowertfeld?
Ja, das sollte funzen, Du musst halt auf eine lückenlose Reihenfolge achten.
wäre es auch möglich die ungebundenen Textfelder mittels SQl der Tabelle anzufügen?
Ja, sicher, musst Du nur darauf achten, dass die auch befüllt sind,
also codemässig prüfen bevor das INSERT gefeuert wird, oder im SQL mit Nz abfangen.
Ich würde ersteres bevorzugen.
gruss ekkehard
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: ebs17 am Juli 15, 2012, 13:35:23
@ekkehard: Ein INNER JOIN ist zum Vervielfältigen nicht geeignet, dieser filtert (Gleichheit des Schlüssels)! In Verbindung mit einer Hilfstabelle würde ein OUTER JOIN vervielfältigen, allerdings nur den Schlüssel.

"Gnadenlose" Vervielfältigung findet über CROSS JOIN's statt:
SELECT HT.Nr, T.Feld, T.WeiteresFeld
FROM Hilfstabelle HT, tbl_training T
WHERE HT.Nr Between 1 AND 10


Bezüglich Thementitel: In einem Formular kann man nur jeweils einen neuen Datensatz anlegen. Bei mehreren würde eine Schleife benötigt werden.

Mehrere Datensätze auf einmal kann man in einer Tabelle anlegen, und das über ein Abfrage wie gezeigt (Massendatenverarbeitung).

MfGA
ebs
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: Maxel am Juli 15, 2012, 14:02:44
Würde es evtl. nicht genügen, dem Datum und ggf. weiteren Feldern den Standardwert aus dem vorigen Datensatz mitzugeben?
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: Beaker s.a. am Juli 15, 2012, 15:16:33
Hallo Eberhard,
Danke für Deine Korrektur. Hast natürlich recht, hier
braucht man ein Kreuzprodukt.
ZitatIn einem Formular kann man nur jeweils einen neuen Datensatz anlegen.
Bei mehreren würde eine Schleife benötigt werden.
In einem Endlosform könnte ich doch per Schaltfläche die
diskutierte Abfrage starten, und dann genau diese neuen DS zur
Weiterbearbeitung/Ergänzung im Form anzeigen, was IMO auch das
Begehren des TS ist.
gruss ekkehard
Titel: Re: Mehrere Datensätze im Formzular einmal anlegen
Beitrag von: ebs17 am Juli 15, 2012, 15:55:53
Ja, ein Formular kann Datensätze einer Tabelle/Abfrage anzeigen. Das ist ja eine Grundfunktionalität eines Formulares.
Erzeugen kannst Du mehrere Datensätze auf einmal aber nur über eine Anfügeabfrage auf eine Tabelle oder über eine passende Abfragekonstruktion.

Ein Formular selber beruht auf einem Recordset(objekt) und kann damit nur dessen Aktionen, und das sind dann Einzelaktionen.
ZitatIn einem Endlosform könnte ich doch per Schaltfläche die
diskutierte Abfrage starten, und dann genau diese neuen DS zur
Weiterbearbeitung/Ergänzung im Form anzeigen
Wie gesagt, die Anfügeabfrage erweitert die Tabelle, zur Anzeige im Formular benötigt man ein Neuabrufen der Datenherkunft (Requery).
Das Ergebnis der mehreren Schritte ist dann natürlich im Sinne des Threaderstellers, aber es bleibt dabei: Es können nicht mehrere Datensätze auf einmal in einem Formular erzeugt werden.

MfGA
ebs