MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Leitor de Código de Barra

    avatar
    AntonildoCordeiro
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 29/02/2012

    [Resolvido]Leitor de Código de Barra Empty [Resolvido]Leitor de Código de Barra

    Mensagem  AntonildoCordeiro 9/4/2013, 15:49

    Olá galera!

    preciso saber o que acontece com o meu codigo vba ou se tem aver o leitor de codigo de barra que estou usando.

    no formulario simples em uma caixa de texto estou inserindo o numero do codigo de barra via leitor de codigo de barra ai beleza ele pega o produto inclui o produto no subformulario mais quando logo em seguida quando ele ler o mesmo codigo ou outro em um tempo de + ou -5 segundo ele nao consegue ler o codigo e o caodigo mostra a mensagem de produto nao cadastrado, mas ao aguardar por mais tempo tipo 8 a 10 segundos funciona perfeitamente.
    alguem pode me ajudar, algum voluntario alguem que ja passou por isso?
    no aguardo um grande abraço a todos

    o leitor é o bematch 310 usb,
    meu codigo é este:
    em todas as funções de pega produto a opção "ltxProdutos" estou me referindo a uma caixa de listagem.
    esta demora so ocorre quando uso codigo de barra e codigo de barra da balanca.
    se vc tiver outra forma rapida e sem conflito estou na espera e desde ja lhe agradeço pela sua atenção e tempo para este meu problema.

    uma abraço.

    Dim mFrase As String, strfiltro As String, GRUPOS As String, PRECO As Currency, strFiltro1 As String, TXTPRODUTO As String, X As Integer, I As Integer, qtd As Integer
    Dim saldos As Currency, db As Database, rs As Recordset, cupoms As String, dataagora
    Dim Incluir As Boolean
    Dim QuantidadeS As String
    Dim guardaast As String, TextoPesquisa As String, txtName1 As String, InStrvalor As String
    Dim Custo As Currency, qtdeprod As String
    Dim A As String, MinhaSeq As String, MinhaSeq1 As String, MinhaSeq2 As String, QualquerSeqüência As String


    Private Sub txtCodigoBarras_Enter()
    Me.NOMEDOPRODUTO.Visible = False
    Me.Texto151.Visible = False
    Incluir = False

    End Sub

    Public Sub PegaProdutobalanca()
    Dim QtdeProdutos As Integer
    Dim Linha
    QtdeProdutos = Me.ltxProdutos.ListCount - 1
    Incluir = True

    MinhaSeq2 = MinhaSeq2 / 10000

    For Linha = 0 To QtdeProdutos
    If Me.ltxProdutos.Column(0, Linha) = MinhaSeq1 Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    Me.txtQtde.Value = MinhaSeq2
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If

    Exit Sub

    End If
    Next Linha
    MsgBox "Produto não cadastrado.", vbInformation, "Aplicativos AMC´2010"
    Incluir = False
    Me.LimpaProduto

    End Sub
    Public Sub PegaProdutocodbarra()
    Dim QtdeProdutos As Integer
    Dim Linha

    If guardaast = "*" Then
    GetValores (txtName1)
    End If
    If QuantidadeS = "" Then
    QuantidadeS = 1
    End If
    If QuantidadeS = 0 Then
    QuantidadeS = 1
    End If
    Incluir = True

    QtdeProdutos = Me.ltxProdutos.ListCount - 1
    For Linha = 0 To QtdeProdutos
    If Me.ltxProdutos.Column(0, Linha) = Me.txtCodigoBarras.Value Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub

    Else
    If Me.ltxProdutos.Column(1, Linha) = Me.txtCodigoBarras.Value Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub

    End If
    End If
    Next Linha
    MsgBox "Produto não cadastrado.", vbCritical, "Aplicativos AMC´2010"

    Incluir = False
    'Me.LimpaProduto
    End Sub
    Public Sub PegaProdutocodbarra1()
    Dim QtdeProdutos As Integer
    Dim Linha
    Incluir = True

    GetValores (QualquerSeqüência)
    GetValores2 (QualquerSeqüência)
    QtdeProdutos = Me.ltxProdutos.ListCount - 1
    For Linha = 0 To QtdeProdutos
    If Me.ltxProdutos.Column(1, Linha) = NOMEDOPRODUTO Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    If QuantidadeS = "" Then
    QuantidadeS = 1
    End If
    If QuantidadeS = 0 Then
    QuantidadeS = 1
    End If
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub


    ElseIf Me.ltxProdutos.Column(0, Linha) = TextoPesquisa Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    If QuantidadeS = "" Then
    QuantidadeS = 1
    End If
    If QuantidadeS = 0 Then
    QuantidadeS = 1
    End If
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub


    End If
    If Me.ltxProdutos.Column(0, Linha) = txtCodigoBarras Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    If QuantidadeS = "" Then
    QuantidadeS = 1
    End If
    If QuantidadeS = 0 Then
    QuantidadeS = 1
    End If
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)


    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub

    End If


    Next Linha
    MsgBox "Produto não cadastrado.", "Aplicativos AMC´2010"
    Incluir = False
    Me.LimpaProduto

    End Sub
    Public Sub LimpaProduto()
    SendKeys "{esc}"
    Me.txtCodigoBarras.Value = Null
    SendKeys "{esc}"
    Me.txtCodigoBarras.SetFocus
    SendKeys "{esc}"
    End Sub

    Public Sub IncluirProduto()
    Incluir = True
    'If (Me.txtQtde > Estoque) Then
    'MsgBox "Estoque atual menor que a quantidade solicitada." & Chr(10) & Chr(10) & "Estoque atual = " & Estoque, vbInformation, "Aplicativos AMC´2010"
    'DoCmd.CancelEvent
    'Me.txtCodigoBarras.SetFocus
    'Else
    Dim db As Database, rs As Recordset
    'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("DETALHESDAVENDA") 'Abre tbl_Parcelas
    rs.AddNew
    rs![NÚMERO DA VENDA] = Me.Número_da_Venda
    rs!NOMEDOPRODUTO = Me!txtCodigoBarras
    rs!Quantidade = Me!txtQtde
    rs!PreçoUnitario = Me!txtPrecoUnitario
    rs!Estoque = Estoque
    rs!Custo = CUSTOCOMPRA
    rs.Update
    rs.Close
    db.Close
    Me.PRODUTO2.Value = Me!txtCodigoBarras
    Me.SUBVENDAS_NO_BALCAO.Visible = True
    Me.SUBVENDAS_NO_BALCAO.Requery
    ' Me.SUBVENDAS_NO_BALCAO.SetFocus
    DoCmd.GoToRecord , , acLast
    Me.txtCodigoBarras.SetFocus
    Me.txtCodigoBarras.Value = Me.PRODUTO2


    Incluir = False
    ' Me.LimpaProduto
    QuantidadeS = 0
    guardaast = ""
    Exit Sub

    'End If
    End Sub
    Public Sub executarenter()
    If (txtCodigoBarras.Value <> "") Then
    QualquerSeqüência = Me.txtCodigoBarras ' Define a seqüência de caracteres.
    MinhaSeq = Left(QualquerSeqüência, 1) ' Retorna "A".
    MinhaSeq1 = Left(QualquerSeqüência, 7) ' Retorna "Alô M".
    MinhaSeq2 = Right(QualquerSeqüência, 6) ' Retorna "Alô M".
    GetInStr (txtCodigoBarras)

    If guardaast = "*" Then
    PegaProdutocodbarra1

    ElseIf MinhaSeq = "2" Then
    PegaProdutobalanca
    Else
    PegaProdutocodbarra
    End If
    Else
    txtCodigoBarras.SetFocus

    End If
    End Sub



    Private Sub txtCodigoBarras_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = 40 Then
    Me.Texto151.Visible = True
    Me.NOMEDOPRODUTO.SetFocus
    Me.txtCodigoBarras.Visible = False

    End If
    'F3 - Finalizar Venda
    If KeyCode = 114 Then
    If MsgBox("Deseja finalizar esta Venda?", vbYesNo, "Aplicativos AMC´2010") = vbYes Then
    If (VENDATOTAL = 0) Then
    SALDODESPONIVEL.Visible = False
    Forms!CAIXALIVRE!Cliente.SetFocus
    Forms!CAIXALIVRE!FORMADEPAGAMENTO = Null
    Forms!CAIXALIVRE!Cliente = Null
    Forms!CAIXALIVRE.[NÚMERO DA VENDA] = Null
    Forms!CAIXALIVRE.Requery
    Forms!CAIXALIVRE![SUBVENDAS NO BALCAO].Visible = False
    Else
    NUMORCAMENTO = Null
    NUMORCAMENTO.Visible = False
    DoCmd.OpenForm "AVISTA", acNormal
    End If
    End If
    End If
    'F4 - Finalizar Venda
    If KeyCode = 115 Then
    If MsgBox("Deseja finalizar esta Venda?", vbYesNo, "Aplicativos AMC´2010") = vbYes Then
    If (VENDATOTAL = 0) Then
    SALDODESPONIVEL.Visible = False
    Forms!CAIXALIVRE!Cliente.SetFocus
    Forms!CAIXALIVRE!FORMADEPAGAMENTO = Null
    Forms!CAIXALIVRE!Cliente = Null
    Forms!CAIXALIVRE.[NÚMERO DA VENDA] = Null
    Forms!CAIXALIVRE.Requery
    Forms!CAIXALIVRE![SUBVENDAS NO BALCAO].Visible = False
    Else
    NUMORCAMENTO = Null
    NUMORCAMENTO.Visible = False
    DoCmd.OpenForm "CREDIARIO2", acNormal
    End If
    End If
    End If

    End Sub
    Private Sub txtCodigoBarras_KeyPress(KeyAscii As Integer)
    Dim txtName As String, I As Integer, intPos As Integer, strList As String, strProcura As String, Linha As Integer

    txtName = Me.txtCodigoBarras.Text
    If KeyAscii = 42 Then
    guardaast = "*"
    End If
    If KeyAscii > 57 Then
    If txtCodigoBarras.SelStart > 3 Then
    If guardaast = "*" Then
    txtName1 = txtCodigoBarras.Text
    GetValores (txtName1)
    GetInStr (txtName1)
    Me.NOMEDOPRODUTO.RowSource = "SELECT DISTINCTROW LISTAGEMFILTROPRODUTOS.CODIGO,DESCRICAO,PRECO FROM LISTAGEMFILTROPRODUTOS WHERE (((LISTAGEMFILTROPRODUTOS.DESCRICAO) Like '" & TextoPesquisa & "*')) ORDER BY LISTAGEMFILTROPRODUTOS.DESCRICAO"
    Me.NOMEDOPRODUTO.Visible = True
    Me.SUBVENDAS_NO_BALCAO.Visible = False
    Else
    GetInStr (Me.txtCodigoBarras.Text)
    Me.NOMEDOPRODUTO.RowSource = "SELECT DISTINCTROW LISTAGEMFILTROPRODUTOS.CODIGO,DESCRICAO,PRECO FROM LISTAGEMFILTROPRODUTOS WHERE (((LISTAGEMFILTROPRODUTOS.DESCRICAO) Like '" & txtName & "*')) ORDER BY LISTAGEMFILTROPRODUTOS.DESCRICAO"
    Me.NOMEDOPRODUTO.Visible = True
    Me.SUBVENDAS_NO_BALCAO.Visible = False
    End If
    End If
    End If

    If KeyAscii = 8 And txtCodigoBarras.SelStart = 0 Then
    Me.NOMEDOPRODUTO.Visible = False
    End If

    If KeyAscii = 13 Then
    executarenter
    SendKeys "{esc}"

    End If



    End Sub
    Function GetValores(sequencia1 As String)
    'Pega os valores depois do asterisco
    GetValores = Right$(sequencia1, InStr(1, StrReverse(sequencia1), "*") - 1) ' aqui pegamos um pedaco a direita da sequencia (Right$)
    TextoPesquisa = GetValores
    ' a funçao InStr, retorna a posição do *, observce que invertemos a
    ' sequencia de pesquisa (strReverse) para buscarmos a posição do
    ' asterisoc a partir do fim da sequencia.
    ' supondo que a sequencia seja "200*produto 1" ela retorna 10
    ' como não queremos oo asterisco, tiramos um da posição (-1)
    ' resultado strRetorno = "Produto 1"
    End Function
    Function GetValores2(sequencia As String)

    GetValores2 = Left$(sequencia, InStr(1, sequencia, "*") - 1)
    QuantidadeS = GetValores2

    End Function
    Function GetInStr(sequencia As String)

    GetInStr = InStr(1, sequencia, "*")
    InStrvalor = GetInStr
    End Function

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    'F6 - Orçamento
    If KeyCode = 117 Then
    ORCAMENTO_Click
    KeyCode = 0
    End If

    'F7 - VERVENDAS
    If KeyCode = 118 Then
    VERVENDAS_Click
    KeyCode = 0
    End If

    'F8 - O's
    If KeyCode = 119 Then
    ABANDONARVENDA_Click
    KeyCode = 0
    End If

    'F9 - Preço
    If KeyCode = 120 Then
    PrecoProduto_Click
    KeyCode = 0
    End If
    'F10 - LIVROCAIXA
    If KeyCode = 121 Then
    livrocaixa_Click
    KeyCode = 0
    End If


    'F12 - OUTROS
    If KeyCode = 123 Then
    MENU_Click
    KeyCode = 0
    End If



    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Leitor de Código de Barra Empty Re: [Resolvido]Leitor de Código de Barra

    Mensagem  Convidado 22/4/2013, 01:17

    Boa noite. não tenho como testar o teu código... mas ao meu ver... o tempo que citou +/- 5 sec é justamente o tempo que o código esta levando para executar o procedimento a seguir (Com o For)


    For Linha = 0 To QtdeProdutos
    If Me.ltxProdutos.Column(0, Linha) = Me.txtCodigoBarras.Value Then
    Estoque = Me.ltxProdutos.Column(3, Linha)
    Me.txtCodigoBarras.Value = Me.ltxProdutos.Column(1, Linha)
    CUSTOCOMPRA = Me.ltxProdutos.Column(4, Linha)
    Me.txtQtde.Value = QuantidadeS
    Me.txtPrecoUnitario.Value = Me.ltxProdutos.Column(2, Linha)

    If Incluir = True Then
    Me.IncluirProduto
    End If
    Exit Sub


    Observe que o loop será executado de 0 até a quantidade de produtos cadastrados:
    For Linha = 0 To QtdeProdutos

    E se neste intervalo for inserido novo código deve estar conflitando com a execução...

    Talvez algum código que interrompa esta execução ou um procedimento com a tecla esc antes de ler o proximo código.

    é uma ideia.


    Cumprimentos.


    Última edição por PILOTO em 16/6/2013, 23:02, editado 1 vez(es) (Motivo da edição : Tópico dado como resolvido por falta de resposta)

      Data/hora atual: 6/5/2024, 12:41