Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
BOA NOITE SOU INICIANTE NA PROGRAMACAO E NO FORUM
ESTOU COM UMA SITUACAO DE URGENCIA MUITA URGENCIA !!! POR FAVOR ME AJUDE
TENHO UMA TABELA DE PEDIDO COM ITENS REPEDITOS MAIS DE UMA VEZ COM O MESMO CODIGO DE BARRA, JA TENHO UMA ROTINA COM QUERY QUE FAZ QUANDO HA APENAS UM ITEM COM CODIGO UNICO NESTA TABELA MINHA ROTINA ENCONTRA E EXLCUIR ATE AI BELEZA, MAS PRECISO COLOCAR UMA CONDICAO QUE SE MEU SELECT ENCONTRAR MAIS DE UM COM O MESMO CODIGO ELE ME MOSTRE OS MESMO E POSSIBILITE A EXCLUIR APARTIR DO NUMERO DO ITEM NAO MAIS DO CODIGO DE BARRA, PARA ME AJUDAREM SEGUE UMA MOSTRAR DA MINHA ROTINA
procedure TFrm_PedidoCliBx.Ed_codigoExit(Sender: TObject); var codInterno:string; cod_consig:string; cod_item:string; item:string; qtde_real,qtde_local,qtde_estoque:string;
begin
dm_bd.Ds_ITEMCONSIGCLI.close;
dm_bd.Ds_ITEMCONSIGCLI.OPen;
Dm_Bd.SQL_ItemConsigCli.OPEN;
qr_canc.SQL.text:=('select * from ITCONSCLI where COD_BARRAS = '+QuotedStr(copy(ED_codigo.TEXT,1,14)));
qr_canc.ExecSQL(true);
qr_canc.open;
ds_novo.Close;
ds_novo.open;
Qtde_Real:='';
qr_produto.Close;
qr_produto.sql.Text:='select cod_barras,qtde_atual from produto Where cod_barras = '+QuotedStr(copy(ED_codigo.TEXT,1,14));
qr_produto.ExecSQL();
qr_produto.Open;
Qtde_Real:=CurrToStr(( Qr_produto.fieldbyname('qtde_atual').AsCurrency)+(dm_bd.DS_ITEMCONSIGCLI.FieldByName('qtde').AsCurrency));
if ds_novo.Locate('cod_barras',copy(ED_codigo.TEXT,1,14),[]) then
begin
ds_novo.Edit;
ds_novo.FieldByName('QTDE_ATUAL').AsString:=qtde_real;
ds_novo.Post;
end;
ds_novo.ApplyUpdates(-1);
qr_canc.Close;
qr_canc.SQL.text:=('delete from ITCONSCLI where cod_barras = '+QuotedStr(copy(ED_codigo.TEXT,1,14)));
qr_canc.ExecSQL(true);
Dm_BD.DS_ITEMCONSIGCLI.Close;
Dm_BD.DS_ITEMCONSIGCLI.Open;
Dm_BD.DS_ITEMCONSIGCLI.ApplyUpdates(-1);
ed_codigo.clear;
ed_codigo.SetFocus;
End;
E NESTA MINHA TABELA TENHO OS SEGUINTES CAMPOS
ID DO PEDIDO
No. ITEM
CODIGO BARRA
DESCRICAO
E OUTROS
Bom pelo que eu entendi em sua explicação, todas as funções com produtos é realizada a partir do Código de Barras, se for isso mesmo o melhor que você pode fazer é impedir que seja cadastrado Código de Barras iguais, ao invés de tratar Código de Barras iguais.
Se não for isso por favor explique-se melhor.
Que campo esta sendo usando dentro dos procedures? e o que voce esta usando como parametros para compor o codigo de barras? certo entvao vamos a uma possivel solução: Você pode executar uma consulta no evento on cliekcel do dbgrid ou algo q possa caracterizar o produto, dai em seguida você efetua uma contagem de registros usando "Tquery.RecordCount" ficaria mais ou menos assim:
if Tquery.RecordCount > 1 then
begin
'Aqui voce faz os procedimentos caso tenha mais de um produto com codigo de barras'
end
else
'Aqui você coloca o procedimento caso so encontre um unico produto'
espero ter ajudado.
O melhor seria se o Banco de Dados permitir seria fazer com que o campo de código barra fosse único.
Isto poderia ser uma Primary Key ou Única que impede a existência de duplicatas.
Olá amigo!
Bom vamos por partes.
Primeiramente, evite escrever em CAIXA ALTA, pois isso é considerado uma inflação pelo pessoal do fórum, pois dá a idéia de como se você estivesse gritando conosco, e tenho certeza que não é essa a sua intenção.
Seu problema compreendi em partes, mas tente se expressar melhor para que assim fique fácil poder te ajudar.
Até a próxima. :thumbsup: