응답 해 주셔서 감사합니다. 나는 그것을 스스로하기로 결심했다. 그리고 그 해결책을 생각해 냈습니다 : 델파이 폼의 구성 요소 : TfrxADOComponents, TfrxDBDataset (테이블이나 쿼리에 "Dataset"속성 설정), TfsScript, TfsPascal. 두 개의 버튼 (TfrxDBDataset에서 데이터를 받고 두 번째 FastReport 스크립트 내부 데이터를 얻기위한 하나)에 대한
이
코드 : ADODatabase과 ADOQuery : 시트 "데이터"에 FastReport 디자이너에서 지금
procedure TForm2.BtnFromVirtualTablesClick(Sender: TObject);
begin
frxReport1.PreviewOptions.Maximized := true;
frxReport1.PreviewOptions.Modal := true;
frxReport1.LoadFromFile('d:\fastrep\testdanychazaVirtual.fr3');
frxReport1.Variables['id']:='''0''';
frxReport1.Variables['ConnStr']:='''''';
frxReport1.PrepareReport();
frxReport1.ShowPreparedReport();
end;
procedure TForm2.BtnFromDatabaseClick(Sender: TObject);
begin
frxReport1.PreviewOptions.Maximized := true;
frxReport1.PreviewOptions.Modal := true;
frxReport1.LoadFromFile('d:\fastrep\testVirtual.fr3');
frxReport1.Variables['id']:='''1''';
frxReport1.Variables['ConnStr']:=''''+
'Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog='+MSConnection.Database+';'+
'Data Source='+MSConnection.Server+';User Id='+MSConnection.Username+
';Password='+MSConnection.Password+'''';
frxReport1.PrepareReport();
frxReport1.ShowPreparedReport();
end;
을 우리는 두 가지 구성 요소가 필요합니다 . 해당 ADOQuery에 필요한 모든 열을 가져 오려면 데이터베이스에 대한 적절한 연결을 설정하고 쿼리를 열어야합니다. fastreport가 필요한 모든 열을 가져올 때 - ADODatabase1.DatabaseName 속성과 ADOQuery1.Database 속성을 지우십시오. 이러한 속성은 "frxReport1OnStartReport"이벤트의 스크립트에 채워 져야합니다. 그렇지 않은 경우 - 데이터베이스에 대한 연결을 찾을 수 없다는 오류가 발생합니다.
보고서에 ID, ConnStr이라는 두 개의 변수가 필요합니다 (보고서 -> 변수에 추가). -이 기본 설정됩니다 마스터 밴드를 추가하고 두 메모를 배치하고 TfrxDBDataset에 연결된 테이블에 연결 보고서에
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
if <ID><>'0' then
begin
ADODatabase1.databaseName:=<ConnStr>;
ADODatabase1.connected:=true;
ADOQuery1.database:=ADODatabase1;
ADOQuery1.open;
masterData1.dataset:=ADOQuery1;
memo1.memo.text:='[ADOQuery1."id"]';
memo2.memo.text:='[ADOQuery1."name"]';
end;
end;
begin
end.
:
여기 FastReport 파스칼 스크립트입니다.
해당 솔루션을 사용하면 만든 프로그램에서 FastReport * .fr3 파일을 사용할 수 있습니다. ID 및 연결 문자열을 가져와야합니다. 또는 필요한 데이터로 채워진 데이터 집합을 전달할 수 있습니다.
인보이스에 대한 보고서는 다소 복잡합니다. 필자가해야 할 일이 없으면 두 배로 늘리지 않을 것입니다. –
정확한 동일한 보고서 파일의 복사본을 만들어 디자이너에서 열 수 있습니다. 그런 다음 데이터 세트를 지정하고 저장하십시오. 그래도 두 파일을 모두 유지해야합니다 ... – rocksteady