Fórum Consulta avançada!!! #164492

04/06/2003

0

Tenho 1 tabela Setor/Funcionário (Set_Func) q possui 3 campos (ID_Set_Func, ID_Tabela e Descricao), qd preencho essa tabela fica assim, por exemplo:
ID_Set_Func, ID_Tabela, Descricao
1, 1 (setor), setorA
2, 2 (funcionário), funcA
3, 1 (setor), setorB
4, 2 (funcionário), funcB
e tenho outra tabela Processo (Proc) q possui 2 campos (ID_Proc e Numero), qd preencho essa tabela fica assim, por exemplo:
ID_Proc, Numero
1, 12345
2, 13579
3, 98765
e mais uma tabela Movimentação (Mov) q possui 2 campos (ID_Mov e ID_Proc) e sua tabela filha (Mov_Filha) q possui 3 campos (ID_Mov, ID_Remet e ID_Dest), qd preencho essas 2 tabelas ficam assim, por exemplo:
- Mov -
ID_Mov, ID_Proc
1, 2 (13579)
2, 1 (12345)
- Mov_Filha -
ID_Mov, ID_Remet, ID_Dest
1, 1 (setorA), 2 (funcA)
1, 2 (funcA), 4 (funcB)
1, 4 (funcB), 3 (setorB)
2, 1 (setorA), 2 (funcA)
2, 2 (funcA), 3 (setorA)
, ..., no caso ID_Set_Func está ligado a ID_Remet e ID_Dest, fazendo com q eu possa escolher um setor ou funcionário para Remetente e Destinatário. A pergunta é: como faço para usar 2 parâmetros diferentes pra consultar um mesmo campo AO MESMO TEMPO???
tipo assim:
- código sql (query) -
SELECT DISTINCT Mov.ID_Mov, Mov.ID_Proc, Proc.Numero
FROM Mov, Mov_Filha, Proc, Set_Func
WHERE Proc.ID_Proc = Mov.ID_Proc
AND Mov.ID_Mov = Mov_Filha.ID_Mov
AND Set_Func.ID_Set_Func = Mov_Filha.ID_Remet
AND Proc.Numero =:prmNumero
AND Set_Func.Descricao like :prmRemet
AND Set_Func.Descricao like :prmDest
- código no botão consultar -
query.close;
query.ParamByName(´prmNumero´).AsInteger := edtNumero.Text;
query.ParamByName(´prmRemet´).AsString := ´¬´ + dblcRemet.Text;
query.ParamByName(´prmDest´).AsString := ´¬´ + dblcDest.Text;
query.open;
-----------------------
OBS: se no caso eu selecionar setorB para Remetente, não traz nenhum registro e se selecionar setorB para Destinatário, traz o primeiro da tabela Mov e seus respectivos filhos, ..., como fazer para essa implementação funcionar??? Alguém pode me ajudar a consertar o código???


D4rk Schn31d3r

D4rk Schn31d3r

Responder

Posts

04/06/2003

Adilsond

  with MyQuery do
    begin
      if Active then
         Close;
      SQL.Clear;
      SQL.Add(´SELECT DISTINCT´);
      SQL.Add(´       Mov.ID_Mov,´);
      SQL.Add(´       Mov.ID_Proc,´);
      SQL.Add(´       Proc.Numero´);
      SQL.Add(´FROM Mov,´);
      SQL.Add(´     Mov_Filha,´);
      SQL.Add(´     Proc,´);
      SQL.Add(´     Set_Func´);
      SQL.Add(´WHERE Proc.ID_Proc = Mov.ID_Proc´);
      SQL.Add(´  AND Mov.ID_Mov = Mov_Filha.ID_Mov´);
      SQL.Add(´  AND Set_Func.ID_Set_Func = Mov_Filha.ID_Remet´);
      SQL.Add(´  AND Proc.Numero = ´ + edtNumero.Text);
      if not VarIsNull(dblcRemet.Value) then
         SQL.Add(´  AND Set_Func.Descricao = ´ + QuotedStr(dblcRemet.Text))
      else
         SQL.Add(´  AND Set_Func.Descricao = ´ + QuotedStr(dblcDest.Text));
      Open;
    end;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar