C# 为什么Crystal Report Viewer总是要求提供登录详细信息以访问WePOS操作系统上的数据库? 我使用Clinux报告链接到一个Access数据库席上写了一篇报告:C:\MyDATa.

C# 为什么Crystal Report Viewer总是要求提供登录详细信息以访问WePOS操作系统上的数据库? 我使用Clinux报告链接到一个Access数据库席上写了一篇报告:C:\MyDATa.,c#,ms-access,crystal-reports,C#,Ms Access,Crystal Reports,该报告只有一个字段(本例中为简化字段),没有子报告 我使用C#.NET4使用了表单和WPF Cyrtsal报表查看器 该报告在运行Windows XP的我的开发PC上以及在同样运行Windows XP的其他“TILL”上成功查看。 但是,在运行WePOS(一种简化的Windows XP)的机器上,报告“始终”显示一个对话框,询问登录详细信息,即用户名和密码。 此对话框还显示C:\MyData.mdb的正确路径 我花了很多天在这上面,用各种可能的方法进行测试(我相信每个人都记得这样的时刻!) 我使

该报告只有一个字段(本例中为简化字段),没有子报告

我使用C#.NET4使用了表单和WPF Cyrtsal报表查看器

该报告在运行Windows XP的我的开发PC上以及在同样运行Windows XP的其他“TILL”上成功查看。

但是,在运行WePOS(一种简化的Windows XP)的机器上,报告“始终”显示一个对话框,询问登录详细信息,即用户名和密码。

此对话框还显示C:\MyData.mdb的正确路径

我花了很多天在这上面,用各种可能的方法进行测试(我相信每个人都记得这样的时刻!)

我使用此代码确保数据库正确链接到:

TableLogOnInfo logonInfo;

foreach (CrystalDecisions.CrystalReports.Engine.Table table in report.Database.Tables)
{
    logonInfo = table.LogOnInfo;
    logonInfo.ConnectionInfo.ServerName = string.Empty;
    logonInfo.ConnectionInfo.DatabaseName = "C:\MyData.mdb";
    logonInfo.ConnectionInfo.UserID = string.Empty;
    logonInfo.ConnectionInfo.Password = string.Empty;
    table.ApplyLogOnInfo(logonInfo);
}
。。。它可以在每台装有Windows XP的电脑上运行,除了装有WePOS的电脑

我还玩过:

report.SetDatabaseLogon(string.Empty, string.Empty, "C:\MyData.mdb", string.Empty);
。。。但这没什么区别


  • Access数据库中没有用户名或密码
  • 所有使用的电脑都安装了相关软件(运行时等)
  • 所有电脑都使用管理员帐户进行了测试(并对文件权限进行了双重检查)
  • 我试着勾选集成安全勾选框,但没有成功
  • 我设置logonInfo.ConnectionInfo.DatabaseName=string.Empty
  • 我设置logonInfo.ConnectionInfo.ServerName=“C:\MyData.mdb”
  • 我试着不使用上面的任何代码,而只是确保数据库在所有PC上都位于同一个位置,没有运气
  • 它是Access 2003数据库文件

  • 我只能断定WePOS是如此“被切断”,以至于Crystal无法通过身份验证。。。请帮忙

    这个WePos东西是否具有从文件系统中的文件夹/位置读取的正确权限,或者您是否需要提升权限或从这个位置读取的内容。连接到远程网络文件夹时可能会出现相同的问题。然后,您还必须指定该计算机上的凭据才能访问它。这有意义吗?

    Public Sub-giveLogin()
    
    Public Sub giveLogin()
                Dim conInfo As New ConnectionInfo
                conInfo.ServerName = ConfigurationManager.AppSettings("ServerName")
                conInfo.DatabaseName = ConfigurationManager.AppSettings("DatabaseName")
                conInfo.UserID = ConfigurationManager.AppSettings("UserID")
                conInfo.Password = ConfigurationManager.AppSettings("Password")
                For Each tblLogon As TableLogOnInfo In CrystalReportViewer1.LogOnInfo
                    tblLogon.ConnectionInfo = conInfo
                Next
            End Sub
    
    <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" HasCrystalLogo ="False"  EnableDatabaseLogonPrompt ="false" EnableParameterPrompt ="false"  />
    
    Dim conInfo作为新连接信息 conInfo.ServerName=ConfigurationManager.AppSettings(“ServerName”) conInfo.DatabaseName=ConfigurationManager.AppSettings(“DatabaseName”) conInfo.UserID=ConfigurationManager.AppSettings(“UserID”) conInfo.Password=ConfigurationManager.AppSettings(“密码”) 对于CrystalReportViewer1.LogOnInfo中的每个tblLogon作为TableLogOnInfo tblLogon.ConnectionInfo=conInfo 下一个 端接头
    仅供将来参考,如果您切换到SQL Server,您将希望使用SQL OLEDB而不是本机SQL客户端,否则您将再次遇到与我第一次将CR集成到我们的应用程序时相同的问题。它将在您的开发机器上工作良好,但在生产中不适用。

    > P>在水晶报表席(可能在所有版本中我都会想象),我把数据库类型从Access /Excel(DAO)改为OLE DB(ADO)。 我敢打赌,如果我坚持的话,我可以将
    System.mdw
    的位置设置为与C#code中的报表数据源位置相对应的位置(见上文),如David所示

    非常感谢David为这个异常“利基”问题的原因提供了一流的指导——我希望它能帮助其他人


    代表添加。

    这对我很有用

    var rd = new CrystalReport1();
                ConnectionInfo connectionInfo = new ConnectionInfo();
                connectionInfo.DatabaseName = @"d:\testing\test2.mdb";
                connectionInfo.UserID = "admin";
                foreach (Table table in rd.Database.Tables)
                {
                    TableLogOnInfo logonInfo = table.LogOnInfo;
                    logonInfo.ConnectionInfo = connectionInfo;
                    table.ApplyLogOnInfo(logonInfo);                
                }
                crystalReportViewer1.ReportSource = rd;
    

    “Access数据库上没有用户名或密码”不是真的。每个Jet数据库(MDB格式)都有一个默认的管理员用户名,可以有密码也可以没有密码。问题是在这个精简的Windows安装中是否有一个工作组文件,以及是否在注册表中定义了一个正确定义的默认工作组。你应该能够提供用户名“管理员”,它应该工作。但是如果没有工作组文件,或者它不在注册表中为此定义的位置,它将永远不会工作。嗨,大卫,谢谢你的回复。我检查了注册表(HKEY\U CURRENT\U USER\Software\Microsoft\Office\11.0\Access\Jet\4.0\Engines SystemDB=Application Data\Microsoft\Access\System.mdw)并检查了System.mdw文件,在所有3台PC上都存在。由于这种情况是Crystal Access的一个问题,我不确定是否会涉及工作组文件,因为在打开Access.mdb文件时,它似乎仅由Access本身使用。我坚持默认的“管理员”密码,并随后尝试在所有3台电脑上使用该密码,但没有成功。如果您注册了一个帐户,您将能够留下评论和编辑您的帖子。如果您使用的是带有Crystal Reports的MDB文件,则使用工作组文件。这就是关键所在,这就是Jet/ACE的工作方式。您始终以默认管理员用户或其他用户的身份登录。如果您在登录时遇到错误,那么您需要检查是否有适当的工作组文件和正确的用户名/密码对。从“admin”开始,没有密码是开始故障排除的地方。