gpt4 book ai didi

delphi - Delphi 2007 中的 Crystal 报表

转载 作者:行者123 更新时间:2023-12-02 14:10:06 25 4
gpt4 key购买 nike

我有:

德尔福2007

Crystal 11

Crystal VCL 组件的 Delphi 7 版本(我知道的最新版本,它在 D2007 中编译得很好)

一个非常简单的测试 Crystal 报告,用 Crystal 11 编写,仅将表格转储到屏幕上(没有选择标准,没有公式,只有直接数据)

我尝试过

创建了一个新的 VCL 表单应用程序

将 TCrpe 组件拖放到表单上

将“ReportName”属性设置为我的测试报告。

我在表单上放置了一个按钮,并在其后面放置了一行:

Crpe1.Execute

如果报表打开“使用报表保存数据”选项,则此操作正常。

如果我关闭该选项,那么我需要提供登录凭据。

使用这段代码(一百万年前在 Delphi 5 中运行良好):

procedure TForm1.BitBtn1Click(Sender: TObject);
var
logonItem: integer;
begin
Crpe1.LogOnServer.Clear;
logonItem := Crpe1.LogOnServer.Add('MYSERVER.MYDOMAIN.COM');
Crpe1.LogonServer[logonItem].UserID := 'USERNAME';
Crpe1.LogOnServer[logonItem].Password := 'PASSWORD';
Crpe1.LogOnServer[logonItem].DatabaseName := 'MYDATABASE';
Crpe1.Execute;
end;

我收到此错误:

---------------------------
Project2
---------------------------
Error:536 Error in File C:\REPORT.RPT:

Unable to connect: incorrect log on parameters.

Execute <PEStartPrintJob>.
---------------------------
OK
---------------------------

我做错了什么?如何向 Delphi 中的 Crystal VCL 组件提供登录凭据?我当前的解决方法是 pretty ugly ,而且我有很多遗留代码需要转换。如果我能以简单的方式使用 VCL 组件,那就太好了。

最佳答案

我在Delphi 6中使用VCL,效果很好。但我不使用 LogOnServer 属性,而是使用 LogOnInfo。

这适用于任何报告以及包含子报告的报告(因为这些报告也需要提供凭据):

 With CRPE1 Do
Begin
With SubReports Do
Begin
Retrieve;
If (Count > 0) then
For i := 0 To (Count - 1) Do
Begin
ItemIndex := i;

LogOnInfo.Retrieve;
For j := 0 to LogOnInfo.Count - 1 Do
Begin
LogOnInfo[j];

With LogOnInfo Do
Begin
ServerName := MyDataSource;
DatabaseName := DatabasePath;
UserID := DBUser;
Password := sPwd;
End;
End; {For j}

Tables.Retrieve;
End; {For i}

ItemIndex := 0;
End; {With SubReports}

SubReports[0];
End; {With CRPE1}

关于delphi - Delphi 2007 中的 Crystal 报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com