Invio Automatico con lettore di codice a barre

Anonimo
2020-02-13T13:32:31+00:00

Salve a tutti,

sto realizzando un programma per la gestione del magazzino, dove ho introdotto anche la gestione dei codici a barre utilizzando il codice (Code128).

Non riesco però, nel momento in cui vado a leggere un codice a barre attraverso un lettore laser, ad attivare automaticamente la lettura e, quindi la scrittura nella Form dei dati relativi al record selezionato.

Cerco di spiegarmi meglio, una form denominata "SEARCH_PRODUCT", sull'evento "Form_Load" pone il focus sulla textbox nel quale il lettore di codice a barre posizionerà il codice, la procedura utilizzata è:

Private Sub Form_Load()

    TXTPRODOTTO = ""

    DoCmd.GoToRecord , , acNewRec

    Me.TXTPRODOTTO.SetFocus

End Sub

a questo punto, andando a leggere un barcode con il lettore laser, questo scrive il codice letto nel campo "TXTPRODOTTO" ma, ed è questo il problema, per poter leggere i dati relativi al codice selezionato devo premere il tasto "INVIO" o "TAB".

Per il campo "TXTPRODOTTO", all'evento "After_Update" ho utilizzato:

Private Sub txtProdotto_AfterUpdate()

    With Me.RecordsetClone

        .findfirst "codice='" & Me.TXTPRODOTTO & "'"

        If Not .nomatch Then

            Me.Bookmark = .Bookmark

        End If

End With

End Sub

Vorrei sapere se esiste la possibilità di fare i modo che, leggendo il codice a barre, il lettore (una semplicissima pistola laser), possa dare anche un "INVIO" e, quindi alla lettura mi compaiano direttamente tutti i valori dei campi che compongono il record selezionato.

Grazie a tutti per l'attenzione

A presto

Ciro

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-02-13T14:42:17+00:00

ciao Ciro,

data la tabella :

e la form che segue :

ed in visualizzazione normale ottengo :

al raggiungimento della digitazione dell'ottavo carattere a seconda del fatto che il match tra quanto digitato e quanto trovato ci sia o meno.

con questa codice VBA.

Prova a vedere se ti e' di aiuto.

Ciao, Sandro.

Option Compare Database

Option Explicit

Private strFilter As String

Private Sub Form_Close()

With Me

    .Filter = vbNullString

    .FilterOn = False

End With

End Sub

Private Sub Form_Open(Cancel As Integer)

With Me

    .Filter = "1=0"

    .FilterOn = True

End With

End Sub

Private Sub txtSearch_Change()

With Me.txtSearch

    If Len(.Text) = 8 Then

            strFilter = "codice='" & .Text & "'"

            .Parent.Filter = strFilter

            .Parent.FilterOn = True

            With Me.RecordsetClone

                If .RecordCount = 0 Then

                    VBA.MsgBox prompt:="Codice non trovato!", _

                         Buttons:=vbCritical + vbOKOnly, _

                            title:="Attenzione!"

                    Me.txtSearch.Value = vbNullString

                 End If

            End With

    End If

End With

End Sub

se l'origine dati non dovesse essere una tabella, qualche ulteriore intervento e' necessario sul fronte recordCount.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2020-02-13T15:10:54+00:00

    Ciao Sandro, grazie sempre per il prezioso e veloce aiuto, ho utilizzato il tuo codice apportando solo una piccola modifica consistente nel fatto che, il codice utilizzato ha un minimo di 10 caratteri e un massimo di 15, per cui ho scritto:

    Option Compare Database

    Option Explicit

    Private strFilter As String

    Private Sub txtProdotto_Change()

        With Me.TXTPRODOTTO

            If Len(.Text) > 9 Then

                    strFilter = "codice='" & .Text & "'"

                    .Parent.Filter = strFilter

                    .Parent.FilterOn = True

                    With Me.RecordsetClone

                        If .RecordCount = 0 Then

                            VBA.MsgBox prompt:="Codice non trovato!", _

                                 Buttons:=vbCritical + vbOKOnly, _

                                    Title:="Attenzione!"

                            Me.TXTPRODOTTO.Value = vbNullString

                         End If

                    End With

            End If

        End With

    End Sub

    così facendo funziona alla grande

    Ancora grazie

    a presto

    Ciro

    La risposta è stata utile?

    0 commenti Nessun commento