Boa tarde...
... baixei um ótimo exemplo de sistema para estudar e para poder adquirir conhecimentos a respeito do VB... e estou “tentando adequar” as minhas necessidades.. mas... estou sem saber resolver o problema que descrevo a seguir...
Na minha tabela de produtos... cadastrei com o "leitor óptico" os códigos de barras"... e não deu problemas no módulo de VENDAS (quando consulto e efetuo a venda)...
mas...
como há produtos que são de fabricação própria.. utilizei o código do sistema (1,2,3...) para cadastrar na balança filizola... então ela mesma me deu o código de barras... e não deu problemas quando consulto e efetuo a venda com os produtos cadastrados "por unidade"...
... o meu problema está com os produtos que são vendidos "por kg"....
isso porque... na etiqueta.. o código de barras vem juntamente com o valor a ser pago... percebi então que tenho que “formatar o meu campo txtCodigo Barras”... mas... não sei “como fazer isso”...
... por explo: (se for 5,00 o kg.. e pesou 0,380kg.. então o total é 1,90).... e o código de barra fica...2 000200001904... então quando passo o leitor... acusa que o produto não está cadastrado...
.. então.. o campo txtCodigoBarras teria que ser formatado para aceitar a digitação desse tipo de dados caso tenha que fazer manualmente, sem o leitor.. mas não sei como formatar o campo..
Andei pesquisando sobre as funções Left, Right e Mid... mas não sei como introduzir... já que estou engatinhando em VB...
Obtive uma orientação =>
Dim codigo as string
Dim valor as currency
Dim Tamanho as long
Tamanho=len(codigobarras)
codigo =left(codigobarras,13)
valor=mid(codigobarras,14,tamanho)
Mas.. não estou sabendo “aonde colocar” ... estou tentando, mas dá erro 13 na última linha (do valor)...
.. agradeço qualquer ajuda...
gracy
como está o campo [txtCodigoBarras]:
no evento ao sair..
If Me.txtCodigoBarras.Text <> "" Then
Me.PegaProduto
Else
Me.LimpaProduto
no evento ao apertar tecla..
If KeyCode = 40 Then
SendKeys "{TAB}"
End If
If KeyCode = 38 Then
SendKeys "+{TAB}"
End If
ao pressionar tecla..
'MsgBox KeyAscii
Dim X As Integer
'BackSpace
If KeyAscii = 8 Then Exit Sub
'Números
For X = 48 To 57
If X = KeyAscii Then
Exit Sub
End If
Next X
'+
If KeyAscii = 43 Then
Me.txtQtde.Value = Me.txtQtde + 1
End If
'-
If KeyAscii = 45 Then
If Me.txtQtde.Value > 1 Then
Me.txtQtde.Value = Me.txtQtde - 1
End If
End If
KeyAscii = 0
Public Sub PegaProduto()
Dim QtdeProdutos As Integer
Dim Linha
QtdeProdutos = Me.ltxProdutos.ListCount - 1
If Me.txtCodigoBarras.Text = "" Then Exit Sub
For Linha = 0 To QtdeProdutos
If Me.ltxProdutos.Column(1, Linha) = Me.txtCodigoBarras.Value Then
Estoque = Me.ltxProdutos.Column(4, Linha)
Me.txtDescricao.Value = Me.ltxProdutos.Column(2, Linha)
Me.txtPrecoUnitario.Value = Format(Me.ltxProdutos.Column(3, Linha), "#,##0.000")
If Incluir = True Then
'SendKeys "{TAB}"
Me.IncluirProduto
'SendKeys "{Enter}"
End If
Exit Sub
End If
Next Linha
MsgBox "Produto não cadastrado.", vbInformation, " SIG "
Incluir = False
Me.LimpaProduto
SendKeys "+{TAB}"
End Sub
Public Sub IncluirProduto()
Dim QtdeItens As Integer
Dim Qtde As Integer
Dim SubTotal As Double
Dim Total As Double
Incluir = True
If Incluir = False Then Exit Sub
If Me.txtCodigoBarras.Value <> "" Then
If Estoque < Me.txtQtde.Value Then GoTo EstIns
DoCmd.OpenQuery "cnsATUEST"
DoCmd.OpenQuery "cnsINPRVE"
Me.LimpaProduto
Me.ltxProdutosVenda.Requery
Me.ValoresCompra
Me.ltxProdutosVenda.Selected(Me.ltxProdutosVenda.ListCount - 1) = True
Me.cmdEstornar.Enabled = False
Incluir = False
End If
Me.txtCodigoBarras.SetFocus
Exit Sub
EstIns:
MsgBox "Estoque atual menor que a quantidade solicitada." & Chr(10) & Chr(10) & "Estoque atual = " & Estoque, vbInformation, " SIG "
Me.LimpaProduto
Me.txtCodigoBarras.SetFocus
SendKeys "+{TAB}"
End Sub