Jump to content
Fórum Script Brasil
  • 0

Sql


Guest - Marcelo -
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 é [email protected]

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

até a proxima wink.gif

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.7k
    • Total Posts
      648.5k
×
×
  • Create New...