当前位置: 首页 > 编程语言 > C#

为什么在WePOS操作系统上CrystalReportViewer总是询问访问Access数据库的详细信息?分享

时间:2023-04-10 22:01:18 C#

为什么CrystalReportViewer在WePOS操作系统上总是要求访问数据库的详细信息?我使用CrystalReportsXI编写了一份报告,链接到Access数据库C:MyData.mdb。该报告只有一个字段(此示例已简化)并且没有子报告。我正在使用C#.NET4的Forms和WPFCyrtsalReportViewer。在运行WindowsXP的开发PC以及运行WindowsXP的其他“tills”上成功查看了该报告。但是,在运行WePOS(WindowsXP的一部分)的情况下,报告“总是”显示一个对话框,询问登录详细信息,即用户名和密码。此对话框还显示C:\MyData.mdb的正确路径。我为此花了很多天,以各种可能的方式进行测试(我相信每个人都会记得这些时间!)。我使用这段代码来确保数据库正确链接到:TableLogOnInfologonInfo;foreach(CrystalDecisions.CrystalReports.Engine.Table表在report.Database.Tables){logonInfo=table.LogOnInfo;logonInfo.ConnectionInfo.ServerName=string.Empty;登录信息。ConnectionInfo.DatabaseName="C:MyData.mdb";logonInfo.ConnectionInfo.UserID=string.Empty;logonInfo.ConnectionInfo.Password=string.Empty;table.ApplyLogOnInfo(logonInfo);}...它适用于每台使用WindowsXPPC的计算机,但使用WePOS的PC除外。我还玩过:report.SetDatabaseLogon(string.Empty,string.Empty,"C:MyData.mdb",string.Empty);......但没有区别。Access数据库上没有用户名或密码所有使用的PC都安装了相关软件(运行时等)所有PC都使用管理员帐户进行了测试(文件权限经过双重检查)我尝试勾选集成安全复选框,但没有成功我设置了logonInfo.ConnectionInfo.DatabaseName=string.Empty;我设置了logonInfo.ConnectionInfo.ServerName="C:\MyData.mdb";我试过不使用上面的任何代码,只是确保数据库在所有PC上的同一个地方,不幸的是它是一个Access2003数据库文件,我只能得出结论,WePOS是如此“减少”,以至于Crystal默默地无法进行身份验证。。请帮忙!仅供将来参考,如果你曾经切换到SQLServer,你将需要使用SQLOLEDB而不是原生的Sql客户端,否则你将再次遇到同样的问题,就像我第一次将CR集成到我们的应用程序中一样程序。它在您的开发机器上运行良好,但在生产环境中运行不佳。这个WePos东西是否具有从文件系统中的文件夹/位置读取的正确权限,或者您是否需要提升权限或从该位置读取的内容。连接到远程网络文件夹时也会出现同样的问题。然后您还必须在该计算机上指定凭据才能访问它。是否有意义?PublicSubgiveLogin()DimconInfo作为新的ConnectionInfoconInfo.ServerName=ConfigurationManager.AppSettings("ServerName")conInfo.DatabaseName=ConfigurationManager.AppSettings("DatabaseName")conInfo.UserID=ConfigurationManager.AppSettings("UserID")conInfo.Password=ConfigurationManager.AppSettings("Password")ForEachtblLogonAsTableLogOnInfoInCrystalReportViewer1.LogOnInfotblLogon.ConnectionInfo=conInfoNextEndSub在CrystalReportsXI中(可能在我想象的所有版本上)我将数据库类型从Access/Excel(DAO)更改为OLE数据库(ADO)。我敢打赌,如果我坚持下去,我可以根据David显示的C#代码中报告数据源的位置来设置System.mdw的位置(见上文)。非常感谢大卫对这个特别“小众”问题的原因的出色指导-我希望它能帮助别人!代表OP添加。这对我有用,以上是C#学习教程:为什么CrystalReportViewer在WePOS操作系统上总是询问访问Access数据库的细节?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——varrd=newCrystalReport1();ConnectionInfoconnectionInfo=newConnectionInfo();connectionInfo.DatabaseName=@"d:testingtest2.mdb";connectionInfo.UserID="admin";foreach(rd.Database.Tables中的表表){TableLogOnInfologonInfo=table.LogOnInfo;logonInfo.ConnectionInfo=connectionInfo;table.ApplyLogOnInfo(logonInfo);}crystalReportViewer1.ReportSource=rd;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: