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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar