Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Wert aus Formular in nicht verbundene Tabelle auto. eintragen

Begonnen von guenterp, Januar 22, 2016, 09:52:46

⏪ vorheriges - nächstes ⏩

guenterp

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

MzKlMu

Hallo,
das sollte auch beim 1. Eintrag funktionieren, auch dann wird dieses Ereignis ausgelöst.
Gruß Klaus

MaggieMay

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.
Freundliche Grüße
MaggieMay

MzKlMu

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.
Gruß Klaus

guenterp

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

guenterp

Hallo,

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

Danke & VG
Günter

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access