Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: guenterp am Januar 22, 2016, 09:52:46

Titel: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: guenterp am Januar 22, 2016, 09:52:46
Hallo,

ich habe zwei über ID verknüpfte Tabellen. Ein Formular mit Datenherkunft Tabelle1 hat ein Textfeld (PlanDate).
Wenn PlanDate gefüllt wird, soll autom. in das Feld LstgStd der Tabelle2 der Wert "1" geschrieben werden.
Mit diesem Code (nach Aktualisierung von PlanDate)
strSQL = "Insert Into Tabelle2 (ID, LstgStd) Values (" & Me!txtID & ", 1)"
CurrentDb.Execute (strSQL)

funktioniert es; aber nur, wenn bereits ein Datum in PlanDate steht und dieses geändert wird.
Ist das Feld PlanDate noch leer, erfolgt kein Eintrag in Tabelle2 ?!?

Gibt es ein anderes Ereignis, oder wie wird das Feld LstgStd gefüllt, wenn PlanDate zum ersten mal eingetragen wird?

Danke & VG
Günter
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: MzKlMu am Januar 22, 2016, 10:03:56
Hallo,
das sollte auch beim 1. Eintrag funktionieren, auch dann wird dieses Ereignis ausgelöst.
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: MaggieMay am Januar 22, 2016, 11:28:21
Hallo,
ZitatIst das Feld PlanDate noch leer, erfolgt kein Eintrag in Tabelle2 ?!?
wenn das heißen soll, dass ein neuer Datensatz in Tabelle1 angelegt wird, und wenn txtID ein (AutoWert-)PK ist, so müsste der Datensatz erst gespeichert werden, ehe ein Eintrag in Tabelle2 erfolgen kann.

Mit dieser Code-Erweiterung
CurrentDb.Execute strSQL, dbFailOnError
erhältst du eine Fehlermeldung, wenn die Abfrage nicht erfolgreich war, das sollte helfen.
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: MzKlMu am Januar 22, 2016, 11:46:33
Hallo,
das sollte auch bei einem neuen Datensatz so funktionieren, ohne zu speichern.
Es erfolgt ja ein Bezug auf das Formularfeld mit der ID und der Autowert kann bereits nach Eingabe des 1.Zeichens des Datums ausgewertet werden.
Ich habe das gerade sicherheitshalber noch mal getestet.
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: guenterp am Januar 22, 2016, 13:01:34
Hallo,

hm, das mit der ID (ist ein Autowert) ist evtl. ein Hinweis.
Ich werde heute mal das Textfeld (txtID) im Formular einblenden, um zu sehen, ob es, wie Klaus schreibt, bereits bei der Eingabe des ersten Zeichens erstellt wird.

Wie müsste ich den Code "Values (" & Me!txtID & ", 1)" ändern, um nicht auf das Textfeld (Me!txtID) zu verweisen, sondern vorher im Code das Texteld einer Variablen (zB AutoID) zuweise?

Danke & VG
Günter
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: MaggieMay am Januar 22, 2016, 13:19:44
Zitatdas sollte auch bei einem neuen Datensatz so funktionieren, ohne zu speichern.
Wie soll das gehen, wenn eine Beziehung mit Referentieller Integrität bzgl. dieses ID-Feldes zwischen den Tabellen eingerichtet ist?

Zitatob es, wie Klaus schreibt, bereits bei der Eingabe des ersten Zeichens erstellt wird.
Das trifft zwar zu, aber für die Speicherung abhängiger Datensätze muss der Datensatz zuerst gespeichert werden.

Zitatsondern vorher im Code das Texteld einer Variablen (zB AutoID) zuweise?
Was versprichst du dir davon? Eine Variable ist hier völlig überflüssig, der Bezug auf das Formularfeld genügt.
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: guenterp am Januar 22, 2016, 14:16:18
Hallo,

ok; wie speichere ich den Datensatz (nach Eingabe des Datums) in VBA bevor ich in die andere Tabelle schreibe?

Danke & VG
Günter
Titel: Re: Wert aus Formular in nicht verbundene Tabelle auto. eintragen
Beitrag von: DF6GL am Januar 22, 2016, 14:53:07
Hallo,

nur mal so aus Neugier:  Warum brauchst Du die "1" in der 2. Tabelle, wenn ein Plandatum in Tabelle eingetragen ist/wurde?


Benutz das Form_Afterupdate-Ereignis und prüfe darin , ob Plandatum nicht leer ist (wenn diese Bedingung zutreffen soll/muss) und schreibe dann die "1" in tbl2.