Office Access VBA: Datenbank "Scannen"
Ich hab ein Problem mit einem Programm für Access. Die Idee ist, dass ich eine Tabelle hab, indem verschiedene Artikel beinhaltet sind, erstes Feld ArtikelID, zweites Feld Artikelname und drittes Feldder Preis. Durch ein Formular gebe ich in einem Textfeld die ID ein und durch VBA durchsucht es die Tabelle nach der ID und schreibt den Artikelnamen und den Preis raus.
Es Funktioniert für die ersten zwei IDs (die Ids sind erstmal in normaler Reihenfolge, also 1,2,3 dann kommt bei mir aus test ne 55) aber bei der dritten ID kommt ein Laufzeitfehler "3021" Kein Aktueller Datensatz. Mit der verfolgung der Werte, sehe ich, dass durch die Schleife erstmal die Zeile 1 untersucht wird, dann die Zeile 2, dannach kommt aber Zeile 55, also die Zeile 3 wird übersprungen.
Der Programmcode für diesen Vorgang ist:
Private Sub ScanbuttonClick() Set Db = CurrentDb() Set Rs = Db.OpenRecordset("Artikel", dbOpenDynaset) Barcode = TextfeldBarcode.Value match = False Zeile = 0 Do Rs.Move (Zeile) If Rs.Fields(0) = Barcode Then Artname = Rs.Fields(1) Preis = Rs.Fields(2) match = True Else Zeile = Zeile + 1 End If Loop Until match Or Zeile = MaxZeilen If match Then TextfeldArtikelname = Artname Textfeld_Preis = Preis End If
-
eine derartige sequenzielle Suche ist mehr als ineffizient. Lies dir mal die Hilfe zur FindFirst-Methode durch.
Ragnar