Consulta avançada!!!
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???
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
Curtidas 0