Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ultraseven.tato

Dupla consulta em sql

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.