点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我已经使用SQL Express多年了,因此决定尝试使用LocalDB。 几分钟后,我安装了它并使用我的应用程序-直到尝试了Crystal Reports。 该报告非常庞大,包含约40个子报告。 有时我可以得到它来打印一个子报表,但是大约要花10分钟(在LocalDB之前使用SQL Express只需10秒)。 我怀疑这是一个连接字符串问题。
我正在使用VS 2017, VB.NET ,Crystal Reports 13sp25。有效的连接字符串 因为我的应用是
" Server =(localdb)\ MSSQLLocalDB; Integrated Security = true; AttachDbFileName = C:\ Program Files \ MyApp \ Data \ MyApp.mdf;"
这是我用于连接Crystal Reports数据库的代码。 它适用于SQL Express,但不适用于LocalDB。
使用crConnectionInfo
.ServerName = My.Application.GlobalAuditDB.PServerName
.DatabaseName = My.Application.GlobalAuditDB.PDatabaseName
.UserID = My.Application.GlobalAuditDB.PUserName
.Password = My.Application.GlobalAuditDB.PPassword
.IntegratedSecurity = False
结尾为
CrTables = Report.reportDocument.Database.Tables
'遍历报告中的每个表并应用LogonInfo
对于CrTable中的每个CrTable
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
如果是CrTable.TestConnectivity(),则
如果(CrTable.Location.IndexOf("。")> 0)然后
CrTable.Location = CrTable.Location.Substring(CrTable.Location.LastIndexOf("。")+ 1)
其他
CrTable.Location = CrTable.Location
如果结束
如果结束
下一步
我试图像这样更改连接以模拟适用于该应用程序的连接字符串,但是它不适用于CR-没有错误,每个子报表仅花费10分钟而10秒:
使用crConnectionInfo
.ServerName = My.Application.GlobalAuditDB.PServerName
.DatabaseName =" MyDB"
.IntegratedSecurity = True
结尾为
感谢您的帮助/建议/示例。
嗨,泰德,
在这种情况下,是苹果和橘子比较了有效的方法和无效的方法。 CR需要特定的属性。
在这里可以获取VS .NET运行时的最新CR。
https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads
在该页面上是参数测试应用程序的链接,它具有登录属性和其中的ReplaceConnection()API。
阅读该页面的全部内容,您需要了解和使用许多升级信息。
Don
您是否有 VB.NET
嗨,Ted,
使用MS SQL,您需要通过OLE DB或ODBC连接,CR不会直接连接到MDF文件。 p>
使用MS SQL Native 11客户端进行连接。
并将您添加到VS标签的CR。
Don
感谢您的答复唐。 这使我感到困惑,将尝试解释原因。
我使用UDL文本文件创建连接字符串。 在UDL"数据链接属性"的第一个选项卡上,选择一个提供的。 有许多OLE DB选项(无ODBC)和一个SQL Server本机客户端。 因此,您的前两个句子似乎是互斥的; 我可以使用OLE DB ** OR **本机SQL,但不能同时使用两者(出现)。
即使在翻译了最后一句中的缩写词后,我也没有关注-也许是因为我不知道"标签"是什么。 和"添加您"。
-Ted
嗨,Ted,
OLE DB或ODBC都使用MS SQL Native Client dll。 使用UDL时,可以选择"本机客户端",也可以为OLE DB选择" ODBC"。 OLE DB仍使用本机客户端进行连接。
实际上并不重要,因此UDL使用OLE DB和MS SQL Native Client。
在这种情况下,因为您进行了升级 在SQL 2017中,您必须使用" MS SQL Native 11"客户端dll。
因此,我已经检查了23年来,我一直支持CR,但我从未听说过通过UDL进行连接并指定 MDF文件,我们不支持UDL连接字符串中的那部分连接。
CR假定它将通过SQL客户端进行连接,并且客户端管理要连接的数据库。 您可以在报表中指定数据库,CR会在连接字符串中指定数据库。
因此,如果报表与设计时使用的数据库不同,请在报表中替换该数据库,并且/或者使用ReplaceConnection() 更新连接。
标记正好在VS论坛的CR中。
因此,只需删除MDF,它就可以正常工作。
Don
我可以使用UDL(OLE DB或Native SQL)连接到我的LocalDB数据库,也可以使用SSMS(都使用SQL Server身份验证)连接。
我还可以使用我的应用程序连接到LocalDB数据库(它也可以与Infragistics网格一起使用)。 但是我仍然无法使用Crystal Reports连接到LocalDB。让我向您展示代码,也许您可以告诉我我所缺少的内容:
crConnectionInfo.ServerName ="(localdb)\ MSSQLLocalDB"
crConnectionInfo.DatabaseName =" MYDATABASE"
crConnectionInfo.UserID =" USERNAME"
crConnectionInfo.Password =" MYPASSWORD"
crConnectionInfo.IntegratedSecurity =错误
谢谢。
-Ted
我在此博客中找到了一些ReplaceConnection代码,这是您的功劳。 从2011年开始-此后代码是否全部更改?
https://blogs.sap.com/2011/09/02/when-to-use-the-replace-connection-method-using-the-crystal -reports或inproc-ras-sdk-for-net/
谢谢
一周热门 更多>