Я только что написал приложение с отчетом Crystal, загруженным объявлением:
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);
Это работало нормально, когда я разрабатывал его для 32-битной Windows 7 с использованием провайдера Jet 4.0
, но как только я переключился на ACE OLEDB 12.0
для 64-битной Windows 10, он продолжал выдавать ошибку «Ошибка входа. Пожалуйста, попробуйте еще раз» , несмотря на то, что файл Access .mdb
не имеет установленного пароля.
То же самое произошло с другой формой с Crystal Viewer, в результате чего окно входа в систему продолжало появляться при открытии отчета. SQL-запросы с использованием ACE OLEDB 12.0
провайдера работали нормально в других местах проекта, только отчет Crystal генерирует ошибку.
Я в тупике, и чтение ответов других не помогло мне, поскольку их обстоятельства / тип сервера различаются. Кто-нибудь может пролить немного света здесь? Большое спасибо заранее.