Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

"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))

Geschrieben

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. :D:D

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...