Veröffentlicht 13. April 200520 j Hab malwieder 'n kleines Problem mit VBA. Ich habe ein Formular zur Erfassung von Mitarbeiterdaten. Sobald hier alle wichtigen Felder ausgefüllt sind, soll geprüft werden, ob der Datensatz bereits vorhanden ist oder nicht. Das funktioniert. Ist er nicht vorhanden, solen die Daten in die Personal-Tabelle gespeichert werden. Das funktioniert auch ganz prima Jetzt möchte ich aber die dabei vergebene Personalnummer auslesen, da ich diese für weitere Aktionen benötige. Und genau da hängt es. Hab im Quelltext folgendes bereits ausprobiert: Dim sqlstr2 As String sqlstr2 = "SELECT COUNT(Name) FROM tbl_Personal WHERE Name='" & ma_nachname & "' AND Vorname='" & ma_vorname & "' " MsgBox CurrentDb.OpenRecordset(sqlstr2, dbOpenDynaset)(0) bzw. Dim sqlstr2 As String sqlstr2 = "SELECT Personalnummer FROM tbl_Personal WHERE Name='" & ma_nachname & "' AND Vorname='" & ma_vorname & "' " MsgBox CurrentDb.OpenRecordset(sqlstr2, dbOpenDynaset)(0) Aber in der MsgBox steht dann entwerder Kein aktueller Datensatz oder 0 Der Datensatz ist aber in jedem Fall schon gespeichert, da diese Abfrage erst nach dem Speicher-Befehl erfolgt. Wer hat 'ne Lösung für mich?
13. April 200520 j "Name" solltest du in Access als Spaltenname vermeiden, da das wohl auch Accessintern irgendwo verwendet wird. Da hab ich mich auch schon mal blöd gesucht und nach dem Umbenennen des Spaltennamens ging es dann. Deine SQL-Abfragen selber sehen ok aus, auch wenn man das kürzer lösen könnte. msgbox(DCount("Name","tbl_Personal","Name='" & ma_nachname & "' AND Vorname='" & ma_vorname)) bzw. msgbox(Dlookup("Personalnummer","tbl_Personal","Name='" & ma_nachname & "' AND Vorname='" & ma_vorname))
13. April 200520 j Danke Wolle, der Tip ist gut. Der Spaltenname "Name" wird auch akzeptiert, daran lag es nicht. In meinem Quelltext war ein Fehler in der Abfrage, ob der Datensatz bereits vorhanden ist oder nicht. Ich hatte geschrieben If IsNull(sqlstr) Then wodurch ich immer in den falschen Abschnitt des Quelltextes kam. Das Programm war immer der Meinung, der Datensatz existiert schon und hat ihn garnicht erst gespeichert. Daher konnte ich auch keine Personalnummer auslesen, die wurde ja nicht vergeben. Richtig mußte es lauten If (CurrentDb.OpenRecordset(sqlstr, dbOpenDynaset)(0) = 0) Then Jetzt funktioniert es.
19. April 200520 j Hallo Pittiplatsch! Habe gerade ein Problem mit meiner Datenbank für meine Projektarbeit und habe gerade gelesen, dass du mir weiterhelfen könntest.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.