无法确定获取此报告数据所需的查询。

2020-09-02 23:40发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,我试图在任何版本的Desi...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,
我试图在任何版本的Designer中创建正常工作的客户报告,但发现了一些兼容性问题。
大多数报告都包含动态参数时发生。 搜索互联网之后,我几乎解决了所有问题,除了以下一项:选择所需的参数(执行了CrystalReportViewer :: RefreshReport()方法)后,出现了上述错误。 测试SQL查询时,我发现那里是默认值,而不是我的选择。
在运行时诊断日志中,我有以下消息:
...

2019-8-26-11-40-47 12440。\ QERowset.cpp 1565完成CQERowset :: readNextRecord 20

2019-8-26-11-40-47 12440。\ QERowset.cpp 1441开头的CQERowset :: readNextRecord 20

2019-8-26-11-40-47 12440。\ QERowset.cpp 1576开头的CQERowset :: _ readNextRecord 20

2019-8-26-11-40-47 12440。\ QERowset.cpp 1840完成CQERowset :: _ readNextRecord <没有更多记录> 20

2019-8-26-11-40-47 12440。\ QERowset.cpp 1565完成CQERowset :: readNextRecord 20

2019-8-26-11-40-58 12440。\ qecommon.cpp 117文件名:"。\ QEQueryInfo.cpp"。 线:854 1

2019-8-26-11-40-58 12440 .. \ cserrinf.cpp 523错误31854(.. \ .. \ src\ data \ queryenghelp.cpp,554):无法确定获取数据所需的查询 此报告。:1

2019-8-26-11-40-58 12440 .. \ cserrinf.cpp 523错误31826(.. \ .. \ src\ data \ databasequery.cpp,764):无法从数据库检索数据。 :1

2019-8-26-11-40-58 12440 .. \ cserrinf.cpp 523错误29741(.. \ .. \ src\ print \ datasource \ datasrc.cpp,2970)::1

有趣的是,当我调用ReportDocument :: VerifyDatabase()时,我没有任何错误,并且可以正确加载参数形式中的选项。
看起来像任何已知问题吗? 你能帮忙吗?

付费偷看设置
发送
6条回答
me_for_i
1楼 · 2020-09-03 00:27.采纳回答

嗯,问题是SDK的旧版本:

顺便说一句:所有报告都使用crdb_odbc.dll,我的SDK版本是13.0.16.1954。

最新版本是SP 25,您可以在此处获取并阅读所有SP 21更新信息,您需要相应地更新项目。

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

也知道CR 14.2.5和VS SP 16的CR的问题,我们将编译器更新为VC 2015(用于CR 2016 SP 4和更高版本),它不适用于VS SP 16的CR,需要安装在SP上 21岁或以上。

这可能是您造成错误的原因...

Don

compass1988
2楼-- · 2020-09-03 00:22

动态参数已命中数据库,因此请尝试使用Params使用的相同字段创建新报表,并查看它们是否起作用。

错误是什么? 错误,请检查您正在使用的参数字段,这可能是丢失/损坏数据的错误表。

不要调用验证,它可能会使用原始数据源和值。

My梦
3楼-- · 2020-09-03 00:27

谢谢您的回复。
问题是我没有和客户一样的Designer工具。 仅使用一个版本创建的报告会返回此错误。
但是,我发现了新的线索。
为了获取使用2016 Designer创建的工作报告,我必须在RefreshReport()之前添加以下过程:

foreach(reportDocument.ReportClientDocument.DatabaseController.GetConnectionInfos()中的ConnectionInfo conInfo

{

reportDocument.ReportClientDocument.DatabaseController.ReplaceConnection(conInfo,connectionInfo.Clone(),null,CrDBOptionsEnum.crDBOptionDoNotVerifyDB);

}

当我禁用此过程时,返回"无法确定查询..."错误的报告可以正常工作,但是在2016 Designer中创建的报告要求提供数据库凭据。 这看起来像是报告文件以外的问题。 此外,这种行为也无法接受,因此我仍然需要您的帮助。 顺便说一句:禁用VerifyDatabase()调用没有任何改变。

小灯塔
4楼-- · 2020-09-03 00:11

嗨,Tomasz,

很好地调试此问题。

很可能是由于数据库客户端信息保存在RPT文件中。

我们始终建议将CR Designer的版本更新为与SDK相同的版本。 并根据您的确切原因更新报告。 您在代码中所做的就是更新报表中的连接属性,以便它可以正常工作。

因此,一旦更新报告以使用其数据库客户端将其保存回去,请务必先进行复制。 然后将报告标记为新报告,可以使用示例代码获取最新版本:

https://blogs.sap.com/2016/02/17/how-to-parameters-in-crystal-reports-for-visual-studio-net /

只有CR Designer或使用SaveAs才能更新报告中的版本历史记录,然后可以对其进行测试以查看其是否已更新,如果它已跳过更新例程,则为

只需添加代码以登录到dB,然后ReplaceConnection()将起作用。

使用Google并搜索ReplaceConnection,您将找到有关如何使用它以及如何生成插入应用程序的代码的KBA。

N-Moskvin
5楼-- · 2020-09-03 00:09

嗨唐,

我已经测试了我的报告和应用程序,并且发现了一些有趣的观点:

所有报表具有相同的ReportClientDocument.MajorVersion和ReportClientDocument.MinorVersion(14.0)。

我在ReportClientDocument.HistoryInfos中找到了更真实的信息,在这里我可以看到所有构建版本和保存的日期。

在这里,我的报告为14.0.2.364,错误为"无法确定查询...",而较新的报告为14.2.5.2618。

但是我还有另一个可以正常工作的报告,该报告返回14.0.2.364。

所以,看来这个问题与RPT文件版本无关。

然后,我在故障报告文件中更新了数据库连接,并将其另存为新文件。

尽管我在HistoryInfo中得到了更新,但没有任何改变。

我很困惑……

是否有任何方法可以在运行时验证/更新所需的信息? 我正在寻找一种适用于任何版本的RPT文件的通用解决方案。

顺便说一句:所有报告都使用crdb_odbc.dll,我的SDK版本是13.0.16.1954。

今天,我发现了另外一件有趣的事情。 有两个报告(均为14.0.2.364),并且在QE_LogonProperties中禁用了设置DSN属性后,错误报告将显示"数据库登录"表单,其中"服务器名称"和"数据库"字段为灰色。 第二份报告正常工作。 从14.2.5.2618创建的报告也可以正常工作。 导致这种现象的RPT文件出错可能是什么问题?

SAP浪
6楼-- · 2020-09-03 00:26

好像需要重构我的产品。

我将在不久的将来而不是现在这样做。

所以现在,我只感谢您的帮助。

如果出现新错误,也许升级后我们会再谈...

今天愉快。

Tomasz

一周热门 更多>