delphi - Delphi 2007 中的 Crystal 报表

标签 delphi crystal-reports delphi-2007

我有:

德尔福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/

相关文章:

Delphi TChart - 如何从 x,y 鼠标坐标获取系列索引而不单击它

sql-server - Crystal Reports,用于 SQL Server 的 OLEDB 提供程序

Delphi 2007 键盘导航 - 返回最近的编辑器选项卡

delphi - 如何以编程方式更改计算机的网络设置?

windows - Windows XP SP3(XP 模式 Windows 7)上 Tbutton 中的 Nasty Png

crystal-reports - Crystal Reports如果为true,则返回数字,否则返回NULL

c# - Crystal 报表 :Hide/suppress field in report depending on user input/parameter

delphi - delphi 2007 中缩进代码的快捷方式

windows - 如何使用GetProcessImageFileName?

delphi - 对于静态数组,使用 RTTI 获取记录字段类型失败