Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Zeitverzögertes Abarbeiten nach Eingabe in Textfeld

Begonnen von Ericolum, September 02, 2015, 13:09:08

⏪ vorheriges - nächstes ⏩

Ericolum

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

Wurliwurm

Ich sehe im Code ein Verständnisproblem. Alles läuft im Access auf dem gleichen Thread. Deshalb bringt das eingebaute Warten nichts.

MaggieMay

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!)
Freundliche Grüße
MaggieMay

Ericolum

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

Ericolum


Ericolum

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

Ericolum

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.

MaggieMay

#10
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.
Freundliche Grüße
MaggieMay

Ericolum