Hallo Leute,
ich habe wieder ein Thema wo ich nichts im Inet finde. Hier mein Problem:
Ein Formular enthält 3 Textfelder (Teilenummer mit "O", Maschine mit "M" und Vorrichtung mit "V" gebinnend) die automatisch gefüllt werden sollen. Ein 4. Textfeld (Text7) wird mit einem DMC Scanner beschrieben. Nach erfolgter Eingabe läuft ein Code durch, der den Inhalt vergleicht und in das jeweilige Textfeld einträgt. Das habe ich jetzt mit If-Schleifen gemacht. Funktioniert soweit recht gut. Zum Versuch habe ich einen Button der das ganze startet, jedoch soll in der Praxis nur der Text eingescannt werden und dann verglichen und eingetragen werden.
Ich habe das ganze schon mit ""Bei Änderung" versucht, hier ist die Abarbeitung zu schnell und der DMC steht noch nicht vollständig drin. Ich möchte aber auch nicht, dass die Bediener so oft auf dem Touchscreen rum drücken müssen. Sie sollen lediglich den Fertigen Datensatz Speichern und dann einen neuen Datensatz beginnen können.
Wie kann ich das tun? Hier der Code.
Private Sub Text7_Change()
Dim scanText As String
'***********************************************************
TWait = Time
TWait = DateAdd("s", 10, TWait)
Do Until TNow >= TWait
TNow = Time
Loop
'************************************************************
If (Text7) <> "" Then
scanText = Text7
If Left(scanText, 1) = "M" Then
Maschine = scanText
Text7 = ""
Me!Text7.SetFocus
Else:
If Left(scanText, 1) = "V" Then
Vorrichtung = scanText
Text7 = ""
Me!Text7.SetFocus
Else:
If Left(scanText, 1) = "O" Then
TeileNummer = scanText
Text7 = ""
Me!Text7.SetFocus
Else: MsgBox "kein Code erkannt"
End If
End If
End If
Else: MsgBox "keine Code erkannt/eingescannt 1.IF"
End If
End Sub
'***** --> habe ich mal einen Zeitbaustein eingefügt, geht aber nicht.
Hi,
ZitatIch habe das ganze schon mit ""Bei Änderung" versucht, hier ist die Abarbeitung zu schnell und der DMC steht noch nicht vollständig drin.
das ist schlichtweg das falsche Ereignis. Schau doch mal in die Access-Hilfe, um zu erfahren wodurch es ausgelöst wird und was sonst noch in Frage käme.
Ich sehe im Code ein Verständnisproblem. Alles läuft im Access auf dem gleichen Thread. Deshalb bringt das eingebaute Warten nichts.
Das ursächliche "Verständnisproblem" ist vermutlich die Unkenntnis des gewählten Ereignisses.
Auch muss man im Change-Ereignis die Text-Eigenschaft des Steuerelements auswerten, um den aktuellen Wert zu erhalten.
Aber wie gesagt, das ist hier einfach die falsche Wahl.
(-> Ereigniseigenschaft anklicken und F1 drücken!)
Ich habe schon vermutet das es hier das falsche Ereignis ist.
Aber welches wäre das richtige? Ich möchte halt nach Vollständiger Eingabe des Textes diesen automatisch einordnen lassen, ohne das einer einen Button auf den Bildschirm drücken muss. Und irgendwie passt kein Ereignis.
ZitatUnd irgendwie passt kein Ereignis.
Sorry, aber da würde ich einfach mal alle Ereigniseigenschaften des Textfeldes nacheinander anklicken und schauen, was Access mir dazu zu erzählen hat.
Die Wahl sollte dann auf "Nach Aktualisierung" fallen.
Welches könnte passen?
Zitat von: MaggieMay am September 02, 2015, 14:58:14
ZitatUnd irgendwie passt kein Ereignis.
Sorry, aber da würde ich einfach mal alle Ereigniseigenschaften des Textfeldes nacheinander anklicken und schauen, was Access mir dazu zu erzählen hat.
Die Wahl sollte dann auf "Nach Aktualisierung" fallen.
Muss ich aber irgendwie das Textfeld verlassen! Es soll aber "automatisch" funktionieren.
Ja, ohne dass das Feld verlassen wird, kann der Abschluss des Scanvorgangs wohl nicht erkannt werden.
Aber du kannst ja anschließend das Feld leeren und den Fokus wieder drauf setzen.
Das ist nicht so richtig zufrieden stellend, gibt es da nix? Ich möchte nicht das die Leute die die 3 versch. DMCs einlesen immer auf den Bildschirm drücken. Die haben meistens Handschuhe an und müssten so am Tag ca. 320 mal drauf drücken, wenn es automatisch den Text vergleicht und einträgt und zum Schluß nur 1 mal Speichern gedrückt werden würde wären es nur 80 mal.
Wieso müssen die Leute denn auf den Bildschirm drücken? Der Scanner müsste so eingestellt werden können, dass am Ende des Scan-Vorgangs automatisch "Enter" gesendet wird, wodurch das Feld verlassen und das Ereignis "Nach Aktualisierung" ausgelöst wird. Anders kann das IMHO nicht funktionieren.
Der Tip mit dem Enter hat finktioniert, danke!!