Fórum Passagem de parametros, eu acho.... #235950
03/06/2004
0
No Interbase tenho duas tabelas no BD, a primeira é de USUARIO com o campo Nivel char(1) e a segunda é a PERFIL com o campo ID Char(1) que estão ligados com FK.
Bem no primeiro Form eu listo no DBGrid todos os usuários e quando posiciono o ponteiro em um determinado usuário e pressiono o botão de perfil um novo Form é invocado apenas com o nível do usuário posicionado no primeiro Form - A questão é que no segundo Form todos os registros tambem são selecionados, não respeitando a sentença abaixo : Select * From usuario,perfil where perfil.id = usuario.nivel.
Como devo fazer para que só o registro da tabela perfil cujo ID seja igual ao nivel da tabela usuario seja mostrado de forma única ?
Grato desde já!
Rcaps. :roll:
Rcaps
Curtir tópico
+ 0Posts
03/06/2004
Rmc1701e
Select * From usuario,perfil where perfil.id = usuario.nivel.
Por essa:
Select * From usuario,perfil where perfil.id = :Nivel.
E na hora de abrir a query, use o codigo:
with qryTabela2 do begin Close; ParamByName(´Nivel´).AsString := qryTabela1.FieldByName(´nivel´).AsString; Open; end;
Essa passagem de parâmetro (que é feita quando você clica no botão de Perfil, filtra a sua 2a. tabela.
Espero ter ajudado.
Reginaldo
Gostei + 0
03/06/2004
Rcaps
Gostei + 0
03/06/2004
Rmc1701e
Gostei + 0
03/06/2004
Rcaps
Quando executo a IBQuery1, conforme vc indicou, recebo a informação que NIVEL Not Found...
Eu não sei onde é que a variável :nivel está recebendo o parametro do campo Nivel da tabela Usuario no momento em que eu estou invocando o segundo Form com o registro do Perfil desejado, entendeu ?
Veja com estou fazendo :
no Form1 tudo bem, tenho vários registros com níveis diferente para cada linha do Grid, OK?
-Quando do Click para invocar o segundo Form faço o seguinte :
procedure TfrmManUsua.btnPermisClick(Sender: TObject);
var
begin
frmPermissoes.ShowModal;
end;
Quando o Segundo Form é executado :
procedure TfrmPermissoes.FormActivate(Sender: TObject);
begin
with IBQuery1 do begin
Close;
ParamByName(´Nivel´).AsString := IBQuery1.FieldByName(´nivel´).AsString;
Open;
end;
Aí recebo a mensagem de Nivel Not Found.
Desculpa, mas sou iniciante ok ?
Grato.
Gostei + 0
03/06/2004
Zunker
with IBQuery1 do begin
Close;
sql.add(´Select * From usuario,perfil where perfil.id = :Nivel´);
ParamByName(´Nivel´).AsString := IBQuery1.FieldByName(´nivel´).AsString;
Open;
Gostei + 0
03/06/2004
Zunker
with IBQuery1 do begin
Close;
sql.clear;
sql.add(´Select * From usuario,perfil where perfil.id = :Nivel´);
ParamByName(´Nivel´).AsString := IBQuery1.FieldByName(´nivel´).AsString;
Open;
Gostei + 0
03/06/2004
Rcaps
Gostei + 0
03/06/2004
Rmc1701e
Quero que você veja a linha que você colocou a consulta, que deve ser essa linha:
[b:87fe4b3664]Select * From usuario,perfil where perfil.id = :Nivel[/b:87fe4b3664]
Veja se você não esqueceu o ´Dois Pontos´ entre o ´= ´ e o ´Nivel´ nesta linha
Gostei + 0
03/06/2004
Rcaps
[b:1627321eb2]select * from Perfil,usuario where perfil.id = :nivel[/b:1627321eb2]
Ok ?
Gostei + 0
03/06/2004
Paulo_amorim
Nao sei no IBQuery, mas numa Query normal vc deveria configurar esse parametro atraves da propriedade Params...
Até+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)