Ir para conteúdo
Fórum Script Brasil
  • 0

Sql


Guest - Marcelo -

Pergunta

Guest - Marcelo -

Amigos, boa tarde !!! (Firebird 1.5 / Delphi 5)

Tenho duas tabelas e preciso fazer um relatório baseado na estrutura abaixo:

Tbl_Item

cod_item-----------------------status-----------------------------------------------------

----1----------------------------H----------------------------------------------------------

Log_Tbl_Item

cod_log-----------------cod_item---------------status------------------data-----------

----1---------------------1-------------------------G---------------------01/04/2004

----2---------------------1-------------------------H---------------------03/04/2004

Preciso fazer uma consulta pegando o registro atual da tabela Item e o

registro anterior ao atual da tabela log, para assim saber qual o seu

status anterior, dessa maneira a consulta me retornaria:

cod_item---------------status_atual--------------status_anterior-----data---------

----1---------------------H-------------------------------G----------01/04/2004

Alguém poderia me dar uma ajuda...Estou ficando maluco...

Desde já agradeço..

Marcelo

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest Francenelson

Complicado, hein!!!! Veja isso e tente enxergar a lógica da coisa, pode não funcionar, mas pode abrir seus horizontes...

Select i.cod_item, L1.status_atual, L2.status_anterior, L1.data from tbl_Item i

Inner join Log_Tbl_Item L1 on L1.Cod_item = i.cod_item

Inner join Log_Tbl_Item L2 on L2.Cod_Item = i.Cod_item

Where L1.Cod_log = 1 //Assim eu obtenho o código atual, aparentemente

And L2.Cod_log = 2 //Assim obtem o anterior

And i.Cod_Item = :codigo //Assim especifica qual item quer essas informaçoes

Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigo, Realmente é complicado mesmo. Mas aqui vai a minha dica, parece ser meio MALUCA blink.gif mas funciona. Na minha opinião o importante é o resultado. smile.gif

Fiz o teste trazendo o resultado num DBGrid e deu certo.

Não sei como você está fazendo a consulta, mas eu fiz apartir do campo Cod_Item da Tabela Item (Foi o que eu entendi).

no meu exemplo estou usando um Edit (Edit1) onde é informado o Cod_Item,

e Cod_Item, e Cod_Log fiz como tipo -->> Integer.

Ok!!!

Vamos Lá:

1 - inclua duas Query em seu form;

2 - inclua o Código abaixo num "button"(por_exemplo):

procedure TForm1.Button1Click(Sender: TObject);
var
  i, cod_at, cod_ant : integer;
begin
   Qry1.Close;
   Qry1.SQL.Clear;
   Qry1.Sql.Add('Select * from Log_Tbl_Item');
   Qry1.Sql.Add('Order by Cod_Log desc');
   Qry1.Open;
   i := 0;
   Qry1.First;
   Cod_at := Qry1.FieldByName('Cod_Log').Value;
   While not Qry1.EOF do begin
      i := i + 1;
      cod_ant := Cod_at - Qry1.FieldByNAme('Cod_Log').Value;
      if i = 2 then Qry1.Last
      else Qry1.Next;
   end;

   Qry2.Close;
   Qry2.SQL.Clear;
   Qry2.Sql.Add('Select I.Cod_Item, I.Status Status_Atual,');
   Qry2.Sql.Add('       L2.Status Status_Anterior, L1.Data');
   Qry2.Sql.Add('From Log_Tbl_Item L1, Log_Tbl_Item L2, Tbl_Item I');
   Qry2.Sql.Add('Where L2.Cod_Log = L1.Cod_Log - '+''''+IntToStr(cod_ant)+''''+' and');
   Qry2.Sql.Add('      l1.Cod_Log = '+''''+IntToStr(cod_at)+''''+' and');
   Qry2.Sql.Add('      L1.Cod_Item = I.Cod_Item and');
   Qry2.Sql.Add('      I.Cod_Item = '+''''+Edit1.text+''''+'');
   Qry2.Open;
end;

Essa Qry2 é onde você tera o resultado.

Qualquer duvida meu e-mail e MSN é naicm@hotmail.com

terei prazer em ajudá-lo ou explicar melhor essa dica.

até a proxima wink.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...