Como ler código de barras?
Bom dia a todos.
Estou desenvolvendo um programas e não estou conseguindo ler o código de barras e jogar os dados em uma tabela, o leitor tras sempre o mesmo item, se vocês puderem me ajudar desde já eu agradeço.
Segue abaixo o meu font.
procedure TFvendas.EditCodBarraChange(Sender: TObject);
begin
Try
// Crio um indice secundário para o campo de código de Barras
tbproduto.Open; //Tabela de origem dos dados
tbproduto.IndexFieldNames := ´item´;
tbproduto.Editkey;
tbproduto.FindNearest([EditCodPed.Text]);
tbproduto.Refresh;
except on
EDBEngineError do MessageDlg(´Erro na busca! Tente novamente.´, mtError,
[mbOK], 0);
end;
begin
if EditCodPed.Text=´´ then begin
Showmessage(´Escolha Nova Venda, para continuar´);
abort;
end;
tbitem.insert;
tbitem[´codigo´]:= tbproduto[´codigo´];
tbitem[´nome´]:= tbproduto[´item´];
tbitem[´Qtd´]:= 1;
tbitem[´vrunit´]:= tbproduto[´venda´];
tbitem[´data´]:=DateTostr(now);
tbitem.post;
EditCodPed.Clear;
editqtd.SetFocus;
end;
end;
Estou desenvolvendo um programas e não estou conseguindo ler o código de barras e jogar os dados em uma tabela, o leitor tras sempre o mesmo item, se vocês puderem me ajudar desde já eu agradeço.
Segue abaixo o meu font.
procedure TFvendas.EditCodBarraChange(Sender: TObject);
begin
Try
// Crio um indice secundário para o campo de código de Barras
tbproduto.Open; //Tabela de origem dos dados
tbproduto.IndexFieldNames := ´item´;
tbproduto.Editkey;
tbproduto.FindNearest([EditCodPed.Text]);
tbproduto.Refresh;
except on
EDBEngineError do MessageDlg(´Erro na busca! Tente novamente.´, mtError,
[mbOK], 0);
end;
begin
if EditCodPed.Text=´´ then begin
Showmessage(´Escolha Nova Venda, para continuar´);
abort;
end;
tbitem.insert;
tbitem[´codigo´]:= tbproduto[´codigo´];
tbitem[´nome´]:= tbproduto[´item´];
tbitem[´Qtd´]:= 1;
tbitem[´vrunit´]:= tbproduto[´venda´];
tbitem[´data´]:=DateTostr(now);
tbitem.post;
EditCodPed.Clear;
editqtd.SetFocus;
end;
end;
Valdir Lima
Curtidas 0
Respostas
Darkrme
08/09/2009
Amigo, nao seu qual componente pra acesso ao BD vc usa.. eu uso o ADO...
minha sequencia para acessar os codigos de barras ficou mais ou menos assim... ve se te ajuda:
Lembrando.. eu tenho uma tabela Vendas, outra Saidas e outra Venda_Saida
qnd eu leio o codigo de barras ele procura na tabela produtos o codigo, se existir ele cadastra uma saida do produto e vincula a saida com a venda e mostra no grid da venda o produto que foi vendido...
qualquer duvida adiciona ai raphael@infonetbr.com q eu posso te ajudar =)
Abraço..
minha sequencia para acessar os codigos de barras ficou mais ou menos assim... ve se te ajuda:
cod_produto := EdtCodProduto.Text; if dm.QryProdutos.Active then begin dm.QryProdutos.Close; end; dm.QryProdutos.SQL.Text := ´SELECT * FROM produtos ´ + ´WHERE cod_produto = :cod_protudo´; dm.QryProdutos.Parameters[0].Value := cod_produto; dm.QryProdutos.Open; dm.QryProdutos.Locate(´cod_produto´,cod_produto,[loCaseInsensitive, loPartialKey]); if dm.QryProdutos.RecordCount <> 0 then begin achou := True; end; if achou then begin dm.QryVendas.Post; //verifica se a query de adicionar saida esta aberta if not FrmCadSaidaEstoque.DataSource1.DataSet.Active then begin FrmCadSaidaEstoque.DataSource1.DataSet.Open; end; //termina de verificar //adiciona produto a venda FrmCadSaidaEstoque.DataSource1.DataSet.Insert; dm.QrySaidasquantidade.Value := 1; dm.QrySaidasvalor_total.Value := dm.QryProdutosvalor_venda.Value; dm.QrySaidasdata.Value := dm.QryVendasdata.Value; dm.QrySaidascod_cliente.Value := dm.QryVendascod_cliente.Value; dm.QrySaidasdesconto.Value := 0; dm.QrySaidasencargos.Value := 0; dm.QrySaidascod_produto.Value := cod_produto; dm.QrySaidas.Post; //termina de adicionar produto //vincula a saida a venda dm.QryVenda_Saida.Open; dm.QryVenda_Saida.Insert; dm.QryVenda_Saidacod_venda.Value := Dm.QryVendascod_venda.Value; dm.QryVenda_Saidacod_saida.Value := dm.QrySaidascod_saida.Value; dm.QryVenda_Saida.Post; dm.QryVenda_Saida.Close; //termina de vincular saida a venda dm.QrySaidas.Close; dm.QryVendas.Edit; AtualizaProdutosTotal(True); EdtCodProduto.Clear; EdtCodProduto.SetFocus; end else begin Application.MessageBox(´O Produto não foi encontrado!´,´Atenção´, MB_ICONEXCLAMATION+MB_OK); EdtCodProduto.Clear; EdtCodProduto.SetFocus; end; end else begin Application.MessageBox(´Por favor, digite o código do produto!´,´Atenção´, MB_ICONEXCLAMATION+MB_OK); EdtCodProduto.Clear; EdtCodProduto.SetFocus; end; end else begin Application.MessageBox(´Você deve preencher todos os campos antes de procurar um produto!´, ´Atenção´,MB_ICONEXCLAMATION+MB_OK); end; end; if dm.qryprodutos.active then begin dm.qryprodutos.Close; end;
Lembrando.. eu tenho uma tabela Vendas, outra Saidas e outra Venda_Saida
qnd eu leio o codigo de barras ele procura na tabela produtos o codigo, se existir ele cadastra uma saida do produto e vincula a saida com a venda e mostra no grid da venda o produto que foi vendido...
qualquer duvida adiciona ai raphael@infonetbr.com q eu posso te ajudar =)
Abraço..
GOSTEI 0
Osocram
08/09/2009
Outro detalhe é que normalmente esses leitores de Codigo de Barra eles Leem e depois dão um ´Enter´ no final
Em vez de usar no OnChange tente usar no OnKeyDown
e pegar o vk_return la...
E para localizar o registro faria que nem o amigo Darkrme descreveu
usando
Em vez de usar no OnChange tente usar no OnKeyDown
e pegar o vk_return la...
E para localizar o registro faria que nem o amigo Darkrme descreveu
usando
Locate
GOSTEI 0
Darkrme
08/09/2009
exatamente... no caso do meu sistema esta no OnKeyDown do form...
if Key = VK_Return then
begin
{codigos anteriores}
end;
e se o seu form tier mais de um keydown no Enter... pode fazer o seguinte
if ActiveControl = Edit1 then
begin
if key = vk_return then
begin
end;
end;
abraço ;)
if Key = VK_Return then
begin
{codigos anteriores}
end;
e se o seu form tier mais de um keydown no Enter... pode fazer o seguinte
if ActiveControl = Edit1 then
begin
if key = vk_return then
begin
end;
end;
abraço ;)
GOSTEI 0