Почему Crystal Report Viewer всегда запрашивает данные для входа в базу данных Access в операционной системе WePOS? - PullRequest
14 голосов
/ 24 мая 2011

Я написал отчет, используя Crystal Reports XI, связанный с базой данных Access здесь C: \ MyData.mdb.

В отчете есть одно поле (упрощенное для этого примера) и никаких вложенных отчетов.

Я использовал средство просмотра отчетов Forms и WPF Cyrtsal с использованием C # .NET 4.

Отчет успешно просматривается на моем компьютере под управлением Windows XP и других «Tills», также работающих под управлением WindowsXP.

Однако на кассовом узле 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);

... но это не имеет значения.

  1. В базе данных Access нет имени пользователя или пароля
  2. На всех используемых ПК установлено соответствующее программное обеспечение (время выполнения и т. Д.))
  3. Все ПК были протестированы с использованием учетной записи Adminstrator (и права доступа к файлам были дважды проверены)
  4. Я попытался поставить галочку в поле Integrated Security, но безуспешно
  5. Я установил logonInfo.ConnectionInfo.DatabaseName = string.Empty;
  6. Я установил logonInfo.ConnectionInfo.ServerName = "C: \ MyData.mdb";
  7. Я пытался НЕ использовать любой из вышеперечисленныхкод, вместо этого просто убедился, что база данных была в одном и том же месте на всех ПК, не повезло
  8. Это файл базы данных Access 2003

Я могу только заключить, что WePOS так "выруби ", что Crystal молча не проходит аутентификацию ... пожалуйста, помогите!

Ответы [ 5 ]

2 голосов
/ 25 февраля 2012

Просто для дальнейшего использования, если вы когда-нибудь переключитесь на SQL Server, вам захочется использовать SQL OLEDB и НЕ собственный клиент Sql, или вы снова столкнетесь с той же проблемой, что и я, когда я был первая интеграция CR в наше приложение. Он будет отлично работать на вашей машине разработки, но не на производстве.

1 голос
/ 11 апреля 2014

В Crystal Reports XI (возможно на всех версиях, которые я себе представляю) я изменил тип базы данных с Access / Excel (DAO) на OLE DB (ADO).установили расположение System.mdw в соответствии с местоположением источника данных отчетов в коде C # (см. выше), как указано Дэвидом.

Огромное спасибо Дэвиду за исключительную поддержку этого исключительного случая 'Нишевая проблема - надеюсь, это поможет кому-то еще!


Добавлено от имени OP .

1 голос
/ 05 октября 2011
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"  />
1 голос
/ 16 июля 2011

Имеет ли эта вещь WePos правильное право на чтение из папки / местоположения в вашей файловой системе, или вам нужны повышенные права или что-то для чтения из этого местоположения.Может быть такая же проблема при подключении к удаленной сетевой папке.Затем вы также должны указать учетные данные на этом компьютере, чтобы получить к нему доступ.Имеет ли это смысл?

0 голосов
/ 01 января 2016

это работает для меня,

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;
...