Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Access] Datensätze suchen per VBA

Empfohlene Antworten

Veröffentlicht

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?

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

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

Hallo Pittiplatsch!

Habe gerade ein Problem mit meiner Datenbank für meine Projektarbeit und habe gerade gelesen, dass du mir weiterhelfen könntest.

Schau dir mal den Beitrag an:

[ACCESS] TableExists wird nicht angenommen

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.