Crystal XI Rel2 RDC参数传递

时间:2009-07-02 10:29:26

标签: delphi crystal-reports

我有以下设置:

  • Delphi 5 Enterprise Update 1 Crystal
  • 报告开发者XI Rel2(RDC 11.5)

经过长时间的试用和错误后,我现在可以将登录内容设置为asked earlier,但是当我尝试按代码设置晶体参数时 - 它不起作用,我得到一个空的报告。

我写了一个小应用程序进行测试(这里只是一个片段):

for i:=1 to FParamFldDefs.Count do begin

   FParFldDef := FParamFldDefs.Item[i];
   FParFldDef.ClearCurrentValueAndRange;

   if ParFieldName = 'User' then
      FParFldDef.AddCurrentValue('hugo')
   else if ParFieldName = '@P_Date' then
      FParFldDef.AddCurrentValue('2009.06.30')

   if FParFldDef.IsDefaultValueSet then
       ShowMessage('DefaultValue: ' + FparFldDef.GetNthDefaultValue(1));
       //--> on loop 1 i=1 this does not show up because IsDefalutValueSet = FALSE
       //--> on lopp 2 i=2 this does show '2009.06.30'
   if FParFldDef.IsCurrentValueSet then
       ShowMessage('CurrentValue: ' + FparFldDef.GetNthCurrentValue(1));
       //--> on loop 1 i=1 this does show 'hugo'
       //--> on lopp 2 i=2 this does not show because IsCurrentValueSet = False

end;

ShowMessage(FldDef.SQLQueryString); //this shows all
                                    //stored procedure parameters empty

现在我已经设法设置了CurrentValues(必须保存有问题的报告版本11 - 它之前是版本9)因为IsCurrentValueSet返回True但是当我尝试读取SQLQueryString时我可以看到所有SP参数是NULL。有什么想法?

2 个答案:

答案 0 :(得分:0)

日期值的格式可能有问题。您是否尝试过使用07/02/2009或07/02/2009 12:00 AM?

答案 1 :(得分:0)

我见过光!如果像我这样的人被迫处理Delphi 5和Crystal XI RDC - 这就是我所做的:

先决条件:

  • 你有大量旧的Crystal Reports版本< 11.5
  • 你仍然需要使用旧的Delphi 5应用程序

首先,你必须:

  1. 安装Crystal Reporst Developer XI Rel2(最后一个支持RDC,不用担心,它可以与现有的Crystal Reports版本并行安装(在我的例子中是版本6)
  2. 在Delphi中导入类型库 (craxdrt.dll + CRViewer.dll)
  3. 打开有问题的报告 Crystal Reports XI并将其另存为 版本XI
  4. 将任何数据库连接更改为 OLEDB
  5. 完成后,您可以使用Joseph Styons wrapper class,就可以了。 如果你也有一个从SQL存储过程获取数据的报告,只需设置这些参数(它们的名称以“@”开头)就像任何其他Crystal参数一样。

    就是这样,我希望这对某人有用。

    现在我要喝点啤酒了!

    干杯, 莱因哈德