我刚刚编写了一个应用程序,该应用程序通过声明加载了一个水晶报表:
private ConnectionInfo crConnectionInfo = new ConnectionInfo();
private TableLogOnInfo crTableLogonInfo = new TableLogOnInfo();
private OleDbConnection conn = new OleDbConnection();
然后进入Form_Load
部分:
connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbLocation;
conn.ConnectionString = connStr;
crConnectionInfo.ServerName = dbLocation;
crConnectionInfo.UserID = "Admin";
crConnectionInfo.Password = "";
然后通过以下方式打印报告:
RptReceiptCash rpt = new RptReceiptCash();
rpt.SetParameterValue(0, GrdReceipt[0, currentRow].Value);
Tables CrTables = rpt.Database.Tables;
foreach (Table CrTable in CrTables)
{
crTableLogonInfo = CrTable.LogOnInfo;
crTableLogonInfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crTableLogonInfo);
}
rpt.PrintToPrinter(1, true, 0, 0);
当我使用Jet 4.0
提供程序为32位Windows 7开发它时,此方法很好用,但是一旦我切换到ACE OLEDB 12.0
为Windows 10 64位,它总是给出“登录失败。请尽管访问.mdb
文件未设置密码,但仍然会重试”错误。
使用Crystal Report Viewer的另一种表单也发生了同样的事情,打开报表时,登录消息框不断弹出。使用ACE OLEDB 12.0
提供程序的SQL查询在项目中的其他地方都可以正常工作,只有Crystal报表会生成错误。
我很沮丧,阅读其他人的回答对我没有帮助,因为他们的情况/服务器类型各不相同。谁能在这里阐明一些想法?预先非常感谢。