QRLabel como parâmetro
Pessoal,
Estou usando o seguinte código no evento BeforePrint do meu relatório (qr):
var
sDefault : String;
begin
sDefault := qr.Label.Caption;
qryTotEmit.Close;
qryTotEmit.SQL.Clear;
qryTotEmit.SQL.Add(´SELECT COUNT(USU) FROM USUARIO´);
qryTotEmit.SQL.Add(´WHERE USU = ´ + #39 + sDefault + 39 );
qryTotEmit.Open;
Isso está funcionando para um qr.Label.Caption, mas quero passar para a variável sDefault vários captions do qr.Label e depois passar todos como parâmetro para a minha query na cláusula Where.
Como posso fazer isso?
Obrigada
Estou usando o seguinte código no evento BeforePrint do meu relatório (qr):
var
sDefault : String;
begin
sDefault := qr.Label.Caption;
qryTotEmit.Close;
qryTotEmit.SQL.Clear;
qryTotEmit.SQL.Add(´SELECT COUNT(USU) FROM USUARIO´);
qryTotEmit.SQL.Add(´WHERE USU = ´ + #39 + sDefault + 39 );
qryTotEmit.Open;
Isso está funcionando para um qr.Label.Caption, mas quero passar para a variável sDefault vários captions do qr.Label e depois passar todos como parâmetro para a minha query na cláusula Where.
Como posso fazer isso?
Obrigada
Barbara.michele
Curtidas 0
Respostas
Deryck
09/09/2004
Acho que comecei a entender o que vc quis dizer ,mas tente ser mais clara, se for o que eu estou pensando , provavelmente , vai ter que tirar isso de um banco, ou coloca no proprio QReport, nao entendi o que vc quer certo,mas se puder ajudar,,,
GOSTEI 0
Barbara.michele
09/09/2004
Criei um relatório onde tenho três queries (qry1, qry2, qry3) e devo passar parâmetros para as mesmas.
1. O que devo colocar na propriedade DATASET do relatório, pois se colocar como sendo o DataSet a qry1, o valor da qry1 é exibido certo mas os valores das outras queries não são exibidos no relatório e se deixar a propriedade DataSet em branco, nada do relatório é exibido. Como faço para dizer que o relatório é ligado às três queries?
2. A primeira query é para buscar o codigo do usuário e está funcionando bem com a seguinte consulta:
with qry1 do begin
Close;
SQL.Clear;
SQL.Add(´SELECT DISTINCT USUARIO FROM RELATORIOS ´);
SQL.Add(´WHERE UF_RELAT = ´ + #39 + ComboUF.Text + 39 );
Open;
end;
O problema agora é que tenho as duas outras consultas, onde devo passar para as duas o resultado da query acima, ou seja, o USUARIO, e para cada usuário tenho um DBText no relatório para exibir o seu resultado.
Coloquei o seguinte código para isso:
with qry2 do begin
Close;
SQL.Clear;
SQL.Add(´SELECT COUNT(USUARIO) FROM AVALIACOES ´);
SQL.Add(´WHERE USUARIO = ´ + #39 + qry1.FieldByName(´USUARIO´).AsString + 39 );
Open;
end;
Onde deve ser inserida essa parte do código? Dentro do with da primeira query ou depois?
Há outra forma de fazer isso? Essa forma funcionou em parte, pois está exibindo o mesmo resultado para todos os usuários, não sei se o problema é a propriedade DataSet do relatório ou se é na hora de passar o resultado da qry1.
O que está errado?
Obrigada
1. O que devo colocar na propriedade DATASET do relatório, pois se colocar como sendo o DataSet a qry1, o valor da qry1 é exibido certo mas os valores das outras queries não são exibidos no relatório e se deixar a propriedade DataSet em branco, nada do relatório é exibido. Como faço para dizer que o relatório é ligado às três queries?
2. A primeira query é para buscar o codigo do usuário e está funcionando bem com a seguinte consulta:
with qry1 do begin
Close;
SQL.Clear;
SQL.Add(´SELECT DISTINCT USUARIO FROM RELATORIOS ´);
SQL.Add(´WHERE UF_RELAT = ´ + #39 + ComboUF.Text + 39 );
Open;
end;
O problema agora é que tenho as duas outras consultas, onde devo passar para as duas o resultado da query acima, ou seja, o USUARIO, e para cada usuário tenho um DBText no relatório para exibir o seu resultado.
Coloquei o seguinte código para isso:
with qry2 do begin
Close;
SQL.Clear;
SQL.Add(´SELECT COUNT(USUARIO) FROM AVALIACOES ´);
SQL.Add(´WHERE USUARIO = ´ + #39 + qry1.FieldByName(´USUARIO´).AsString + 39 );
Open;
end;
Onde deve ser inserida essa parte do código? Dentro do with da primeira query ou depois?
Há outra forma de fazer isso? Essa forma funcionou em parte, pois está exibindo o mesmo resultado para todos os usuários, não sei se o problema é a propriedade DataSet do relatório ou se é na hora de passar o resultado da qry1.
O que está errado?
Obrigada
GOSTEI 0
Rômulo Barros
09/09/2004
Query.Close(); Query.Sql.Clear(); Query.Sql.Text := ´ SELECT COUNT(USUARIO) ´ + ´ FROM AVALIACOES ´ + ´ WHERE USUARIO IN ´ + ´( ´ + ´ SELECT DISTINCT USUARIO ´ + ´ FROM RELATORIOS ´ + ´ WHERE UF_RELAT = ´ + #39 + ComboUf.Text + 39 + ´) ´; Query.Open();
:wink: :wink: :wink: :wink: :wink: :wink:
GOSTEI 0
Barbara.michele
09/09/2004
A questão é que tenho que exibir os resultados de cada query um em cada QRDBText.
Obtenho um valor em determinada Query, que é o usuário, e tenho que passar esse valor como parâmetro para as outras três queries e exibir o resultado de cada consulta num QRDBText.
Obrigada
Obtenho um valor em determinada Query, que é o usuário, e tenho que passar esse valor como parâmetro para as outras três queries e exibir o resultado de cada consulta num QRDBText.
Obrigada
GOSTEI 0