Guten Abend.
Ich hab ein kleines Problem mit einem Programm für Access.
Ich muss für die mündliche Prüfung für die kommende Woche einen "Barcodescanner" erstellen.
Die Idee ist, dass ich eine Tabelle hab, indem verschiedene Artikel beinhaltet sind, erste Spalte die ArtikelID, zweite Spalte Artikelname und dritte Spalte der Preis.
Durch ein Formular gebe ich in einem Textfeld die ID ein und durch VBA durchsucht es die Tabelle nach der ID und schreibt in 2 extre Textfelder den Artikelnamen und den Preis aus.
Das Problem ist, ich habe durch Google schon von Recordset gehört und versucht es anzuwenden.
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.
Also verstehe ich entweder den RS.Fields und den RS.Move befehl nicht, oder ich hab was falsch gemacht.
Der Programmcode für diesen Vorgang ist:
Private Sub Scan_button_Click()
Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("Artikel", dbOpenDynaset)
Barcode = Textfeld_Barcode.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 <-- hab bei der Aktivierung des Formulars eine Untersuchung für die maximale anzahl der zeilen.
If match Then
Textfeld_Artikelname = Artname
Textfeld_Preis = Preis
End If
End Sub
Die komplette DB hab ich mal hochgeladen, wer es genauer anschauen möchte:
http://www.file-upload.net/download-2597248/Barcode---Kopie.accdb.html
Ich danke schonmal für jede Hilfe
mit freundlichen Grüßen
Drag0nmaster
Ich hab ein kleines Problem mit einem Programm für Access.
Ich muss für die mündliche Prüfung für die kommende Woche einen "Barcodescanner" erstellen.
Die Idee ist, dass ich eine Tabelle hab, indem verschiedene Artikel beinhaltet sind, erste Spalte die ArtikelID, zweite Spalte Artikelname und dritte Spalte der Preis.
Durch ein Formular gebe ich in einem Textfeld die ID ein und durch VBA durchsucht es die Tabelle nach der ID und schreibt in 2 extre Textfelder den Artikelnamen und den Preis aus.
Das Problem ist, ich habe durch Google schon von Recordset gehört und versucht es anzuwenden.
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.
Also verstehe ich entweder den RS.Fields und den RS.Move befehl nicht, oder ich hab was falsch gemacht.
Der Programmcode für diesen Vorgang ist:
Private Sub Scan_button_Click()
Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("Artikel", dbOpenDynaset)
Barcode = Textfeld_Barcode.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 <-- hab bei der Aktivierung des Formulars eine Untersuchung für die maximale anzahl der zeilen.
If match Then
Textfeld_Artikelname = Artname
Textfeld_Preis = Preis
End If
End Sub
Die komplette DB hab ich mal hochgeladen, wer es genauer anschauen möchte:
http://www.file-upload.net/download-2597248/Barcode---Kopie.accdb.html
Ich danke schonmal für jede Hilfe
mit freundlichen Grüßen
Drag0nmaster
Zuletzt bearbeitet: