2009-10-14 83 views
1

报告我:水晶在2007年德尔福

德尔福2007年

水晶11

德尔福7版本的水晶VCL组件(最新的一个我所知道的,和它编译罚款在D2007)

一个非常简单的测试水晶报表,写在水晶11,它只是转储到屏幕上的一张桌子(没有选择标准,没有公式,只是直线数据)

我试图

创建一个新的VCL窗体应用程序

丢弃的形式

的 “REPORTNAME” 属性设置为我的测试报告上TCrpe组件。

我放弃了表单上的按钮,和它背后放置一条线:

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组件,那将是非常好的。

回答

5

我在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} 
+0

你太棒了,非常感谢 – JosephStyons 2009-10-14 19:26:00

+0

非常感谢。 – 2012-05-28 15:34:42

+0

这有语法错误。我不知道它是如何成为答案的! – FLICKER 2013-07-08 19:55:38

3

下面是一些旧的“遗产”的代码,它使用VCL组件:

mCrpe.reportname:=mfilename; 
mCrpe.Connect.UserID := CustomReportCurrentUser; 

mCrpe.connect.ServerName:='servername'; 
mCrpe.connect.DataBaseName:='databasename'; 
mCrpe.connect.propagate:=True; 
mCrpe.Connect.Password := CustomReportClientPass; 



try 
    mConnected := mCrpe.Connect.Test; 
except 
    on e: eDBEngineError do begin 
    showmessage(e.message); 
    end; 
end; 

mCrpe.windowbuttonbar.refreshbtn:=true; 
mCrpe.discardsaveddata; 
mCrpe.Show; 

前段时间我读过Crystal VCL组件正在“落日”。从那时起,我已经迁移到Active X RDC组件。它需要将Active X安装在目标计算机上。

+0

这就是我们所做的,它仍然与D2007和Crystal 11一起工作。我们不得不离开它,RDC如何进行? – 2015-07-02 01:52:03

+0

它的工作原理.....但总的来说,它似乎是水晶报表的所有者(不知道现在是谁:Crystal Decisions - > Business Objects - > SAP ....)几乎不支持客户端中的Crystal Reports /服务器设置。 – 2015-07-06 20:41:53