Zum Inhalt springen

[Access] Datensätze suchen per VBA


Pittiplatsch

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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