Array
(
)

QRLabel como parâmetro

Barbara.michele
   - 09 set 2004

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


Deryck
   - 09 set 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,,,


Barbara.michele
   - 16 set 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


Rômulo Barros
   - 16 set 2004

#Código

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:


Barbara.michele
   - 17 set 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