QRLabel como parâmetro

09/09/2004

0

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


Barbara.michele

Barbara.michele

Responder

Posts

09/09/2004

Deryck

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,,,


Responder

16/09/2004

Barbara.michele

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


Responder

16/09/2004

Rômulo Barros

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:


Responder

17/09/2004

Barbara.michele

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar