gracymary
|
PARA DE MINAS MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 09/01/2007 13:59 hs
Boa tarde.. Pessoal... o "tema" é o mesmo... estou postando novamente... tentando ser "mais transparente" quanto as minha "ignorância"... Tenho um campo txtCodigoBarras.. que recebe a leitura do "leitor óptico"... acontece que não estou sabendo formatar esse campo.. na verdade.. nem sei se é uma questão de "formatação"... Se eu não tivesse "produtos por peso" ... não teria problemas... mas também não teria a oportunidade de aprender.. Não estou sabendo "lidar" com o campo txtCodigoBarras para que ele receba a "leitura do leitor óptico" quando o produto é por peso... Não sei em qual evento do meu campo txtCodigoBarras inserir alguma função ou código... para que o leitor consiga pesquisar apenas o código do produto no banco de dados sem o "valor a ser pago" que vem no restante do códigodebarras da etiqueta emitida pela balança.. Estrutura do banco dados tblVENDA: campo txtCodigoBarras = tipo Texto - 13 campo txtQtde = tipo Numero - Duplo Padrão - 2 campo txtPrecoUnitario = tipo Numero - Duplo - 2 Quanto as etiquetas emitidas pela balança: Sei que o 2 = produto pesado (a balança informa) 0012 = código que o produto foi cadastrado na balança 00000250 = vr a ser pago Então... pra' mim, que não tenho grandes conhecimentos de programação, tá complicado.. (vou usar a palavra formatar).. "formatar" esse campo... Penso que.. deveria utilizar como ponteiro o "2" (da balança)... então.. quando "o início do txtcodigobarras" fosse "=2".. o leitor leria apenas "até a quinta posição" consultando na tblProdutos (assim o valor da compra não afetaria a pesquisa do código do produto no banco de dados).. então.. ou.. completaria "à direita da quinta posição com zeros" e o valor da compra iria pro subtotal... ou após a "quinta posição (no campo txtCodigoBarras) sairia mesmo o valor da compra (mas sem afetar a pesquisa na tblProdutos) e que seria repetida no subtotal - e como temos o preço por "kg" e o valor a ser pago... teremos a quantidade.. "se" a "primeira posição do txtcodigoBarras = 2"... Acho que devo mudar o "tipo de dados" do campo "Qtde" e do "PrecoUnitario" .. Pessoal... não estou sabendo é "codificar" esse raciocínio.. até nem sei bem se "ele" está correto... não sei se é assim que "funciona"... já li sobre as funções len-left-right- ... apenas não sei "como e aonde... inserí-las" pra' que surtam efeito.. conto com a ajuda de vocês.. e conseguindo concluir... disponibilizo pra' estudos.. abraços gracy
|
|
|
|
kerplunk
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 10/01/2007 09:30 hs
Bom, como diria Jack, o estripador, vamos por partes... Primeiro: Poderia postar um exemplo do número retornado pela leitura do código? Segundo: Com certeza isso seria no evento KeyPress do TxtCodigoBarras. Já que o leitor retorna SEMPRE o número do código de barras em si, seguido de um CHR(13) Mas pra te mostrar um exemplo de como seria o código, preciso do número retornado pela leitor, e você me explicando o que foi lido, tipo peso, código e preço.
|
|
|
|
Postada em 12/01/2007 08:20 hs
gracymary, bom dia.. Pegando carona no Kerplunk, post o retorno da leitura (o que aparece no txtCodigoBarras) e depois lhe informaremos como format o objeto. Será algo do tipo: txtCodigoBarras = mid(txtCodigoBarras,2,5) Explicando: Do valor retornado pegue apenas 5 digitos apartir da 5 posição..
|
|
|
gracymary
|
PARA DE MINAS MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 19/01/2007 12:54 hs
vejam... o leitor me retorna => 2001200002229 , ou seja.. 2=referente a produto por peso, 0012 que é o código (cadastrado na balança e na tblProdut) o restante o vr a ser pago .. o último número é o dígito verificador. no meu campo da tblVENDA o "txtCodigobarras" está assim.... 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, " SIGVC " 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, " SIGVC " Me.LimpaProduto Me.txtCodigoBarras.SetFocus SendKeys "+{TAB}" End Sub agradeço a ajuda.. gracy
|
|
|
LCRamos
|
GOIANIA GO - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/01/2007 00:06 hs
Gracymary, não se precisa complicar, normalmente os leitores, emitem em um final de leitura, uma tecla TAB, ou seja vai para o próximo campo. Sendo assim, voce pode colocar o evento no LostFocus, agora se não emitir (alguns leitores importados, não emitem), voce faça no evento KeyPress, verificando o tamnho do campo, se for 13, joga o foco para o próximo controle, e teste. Exemplo Private Sub Text1_LostFocus If Left(Text1.Text, 1) = "2" Then ' aqui verifica, se é de balança CODIGO = Mid(Text1.Text, 2, 4) ' aqui ele pega o código do produto VALOR = Mid(Text1.Text, 5, 8) ' aqui pega o valor a ser pago End If normal End Sub A partir dai, voce desenvolve. Claro, que voce tem que testar se o campo é numérico, qual seu tamanho, etc, etc..., bem simples. Qualquer dúvida, poste vlu//
|
|
|
|
Postada em 23/01/2007 16:49 hs
Dim Peso As Double If Left(txtCodigo.Text, 1) = "2" And Len(txtCodigo.Text) = 13 then PorPeso = True Peso = Mid(txtCodigo.Text, 8, 5) Peso = (Peso / 100) ValorProduto = Peso end if
|
|
|
|