Passagem de parâmetro entre fontes de dados (condutores de dados)
Para exemplificar este recurso, na aba Desenho, acesse o menu Relatório, e como sugestão, selecione Título (este apresenta o conteúdo somente na primeira página).
-
Na aba Dados, defina duas fontes de dados.
-
Na aba Cálculo, em Objetos Relatórios, clique com o botão direito do mouse e ative a opção Eventos.
-
Em seguida, selecione Title e, em Eventos para Título, clique em BeforePrint.
-
Clique na área abaixo para ser criada uma procedure. e desenvolva:
procedure TitleBeforePrint;
var
FiltrodePesquisa : TStringList;
ValorInformado : String;
begin
FiltrodePesquisa := TStringList.Create;
ValorInformado := Report.AutoSearchCriteriaByName ('fr_acao', 'aco_codigo').SearchExpression;
FiltrodePesquisa.Add ('aco_codigo=' + ValorInformado);
ChangeAutoSearch ('fr_acaoparametro', FiltrodePesquisa, Report);
end;
É nessa procedure que será criada a expressão de passagem de parâmetro entre fontes de dados.
Para início, abaixo da procedure e antes do begin, escreva var para informar as variáveis que serão declaradas. Declare duas variáveis: FiltrodePesquisa: TStringList - é uma classe que permite criar e manipular em memória uma lista de strings, como exemplo, um arquivo texto, e ValorInformado : String - essa variável receberá o código passado pela fonte de dados. Em begin, crie/inicialize a variável que foi declarada anteriormente (FiltrodePesquisa), recebendo o valor TStringList.Create. Em seguida, na outra linha, ValorInformado receberá Report.AutoSearchCriteriaByName, passando dois parâmetros entre parênteses e apóstrofos:
-
1º parâmetro - a fonte de dados origem;
-
2º parâmetro - o campo que possui o filtro.
Após o segundo parâmetro, coloque um ponto e adicione SearchExpression. Agora, em outra linha, adicione o valor passado para a variável FiltrodePesquisa.Add informando dois parâmetros:
-
1º parâmetro (entre parêntese e entre apóstrofos) - o campo que possui o filtro ('aco_codigo=');
-
2º parâmetro concatenado (+) - o conteúdo da variável (ValorInformado);
Por último, em outra linha, coloque o comando ChangeAutoSearch passando três parâmetros:
-
1º parâmetro (entre parênteses e apóstrofos) - a fonte de dados destino ('fr_acaoparametro');
-
2º parâmetro - FiltrodePesquisa e
-
3º parâmetro - Report.