안녕하십니까 델파이7에서 크리스탈9VCL을 설치하고 프로그램을 작성하려고
합니다.
<!--CodeS-->
procedure TForm1.Button1Click(Sender: TObject);
begin
Crpe1.ReportName := 'C:\Report\Report5.rpt' ;
Crpe1.ParamFields[0].CurrentValue := '21' ;
Crpe1.ParamFields[1].CurrentValue := '20041101' ;
Crpe1.ParamFields[2].CurrentValue := '20050301' ;
Crpe1.Execute;
end;
<!--CodeE-->
[Error Message]
Project CR_CallParam.exe raised exception class ECrpeErrorwith message 'Error:536 Error in File C:\Report\Report5.rpt
Unable to connect:incorrect log on parameters Execute <PEStartPrintJob>'
Process stopped
Use Step or Run to continue
파라미터를 이렇게 넘기는게 맞는지도 잘모르겠습니다.
마땅히 참고할 자료가 없드라고요 그럼 고수님들의 조언 부탁드리겠습니다.
좀더 자세히 답변드리자면
procedure TCrystalReportsReviewer.FormCreate(Sender: TObject);
var
FileName : String;
begin
Application1 := CRAXDRT_TLB.TApplication.Create(self);
FileName := ExtractFilePath(Forms.Application.ExeName);
FileName := FileName + 'testtt.rpt';
CrReport := Application1.OpenReport(FileName,crOpenReportByTempCopy);
CrReport.EnableParameterPrompting := false;
CrReport.DiscardSavedData;
CrReport.Database.LogOnServer('crdb_odbc.dll', 데이터베이스 이름, 테이블 이름, 사용자, 비밀번호);
//비우어는 미리보기 기능입니다만 저는 테스트로만 썼지 실제 안됩니다.
CrystalActiveXReportViewer1.ReportSource := CrReport;
end;
//프로시져에 해당값을 넣으면 됩니다.
procedure TCrystalReportsReviewer.ViewReport(Report_name: String);
begin
CrReport.ParameterFields.Item[1].AddCurrentValue(Report_name);
end;
procedure TCrystalReportsReviewer.ExportReport(Report_name: String);
begin
//추출하는 부분
//저는 추출하는 부분에 PDF형식으로 했지때문에 저런 값입니다 필요하면 바꾸세요.
CrReport.ExportOptions.DestinationType := crEDTDiskFile;
CrReport.ExportOptions.FormatType := crEFTPortableDocFormat;
//파일이름을 정해준다.
CrReport.ExportOptions.ExchangeFolderPath := 'C:\temp';
CrReport.ExportOptions.DiskFileName := Report_name + '.pdf';
if CrReport.ExportOptions.DiskFileName <> '' then
CrReport.Export(false);
end;
procedure TCrystalReportsReviewer.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
CrReport.Database.LogOffServer('crdb_odbc.dll', 데이터베이스 이름, 테이블 이름, 사용자, 비밀번호);
CrReport := nil;
Application1.Destroy;
end;
이정도면 될까요?