2010-05-11 3 views
5

Проведя хорошее время от 3 до 4 часов в Google, пытаясь найти какое-либо решение моей проблемы, мне не повезло.Crystal Reports Failed Database Login

В основном, мы используем хрустальные отчеты для наших приложений .NET с обратной связью сервера sql, у нас есть много клиентов, каждый со своим собственным сервером, поэтому наши отчеты должны иметь динамические настройки своих отчетов. До недели назад это работало нормально. Однако несколько дней назад клиент сообщил, что они получают приглашение для входа в базу данных для отчета (только один отчет, остальные работают нормально). Мы были совершенно тупики, но нам удалось воспроизвести их на нетбуке, который не имел визуальной студии или сервера sql. В конце концов, разработчик решил воспроизвести отчет в надежде, что это просто странность в этом конкретном отчете.

К сожалению, у нового клиента сегодня тоже была такая же проблема, но на этот раз для каждого хрустального отчета у них было - а также они работали на нетбуке, так что мы действительно совсем потерялись здесь.

Ниже приведен скриншот того, что наши клиенты получают представлены -

Screenshot http://img404.imageshack.us/img404/1375/loginf.png

и вот код, который я использую, чтобы установить информацию о соединении в отчете

   cI.ServerName = (string)builder["Data Source"]; 
       cI.DatabaseName = (string)builder["Initial Catalog"]; 
       cI.UserID = (string)builder["User ID"]; 
       cI.Password = (string)builder["Password"]; 

       foreach (IConnectionInfo info in cryRpt.DataSourceConnections) 
       { 
        info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
       } 

       foreach (ReportDocument sub in cryRpt.Subreports) 
       { 
        foreach (IConnectionInfo info in sub.DataSourceConnections) 
        { 
         info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
        } 
       } 

Как всегда , любая помощь очень ценится.

ответ

2

Решение оказалось, что построитель соединений, который клиент использовал для настройки своей системы, не помещал имя экземпляра. Довольно смутно приложение .net отлично работало с ним. Тем не менее, при этом отсортированные отчеты о кристаллах теперь работают безупречно.

Спасибо за ваш вход Крейг.

+0

У меня возникла аналогичная проблема, можете ли вы рассказать, что вы подразумеваете под построением соединения здесь и в вашем коде? благодаря –

2

Возможно, проблема заключается в том, как вы устанавливаете данные аутентификации. Считаете ли вы использование метода ReportDocument.SetDatabaseLogon? Вызовите его один раз для каждого уникального соединения с БД в отчете. Это позволит исключить необходимость перечисления всех таблиц в отчете и, насколько я помню, необходимость перечисления таблиц подписок.

+0

Я пробовал ваше предложение, но я все равно получаю ту же ошибку с тестом - однако теперь он получил имя базы данных в приглашении входа в систему. Все еще не удается, хотя если я попробую ввести правильный пароль. – Marlon

+0

Установлено ли поле dataase? Если вы предоставите правильные учетные данные при отправке отчета, работает ли отчет так, как ожидается? – craig

+0

Если вы скорректируете значения в SetDatabaseLogon, например reportDocument.SetDatabaseLogon («учетная запись», «пароль», «база данных», «сервер»), работает ли она? Чтобы убедиться в том, что информация о входе в подрегистр установлена, добавьте этот бит в свой цикл подзаголовка. Дайте мне знать, как это работает, и мы попробуем следующий тест. – craig

0

Поиск решения подобной проблемы привел меня к этому вопросу. Моя проблема/решение было немного другим, но я предполагаю, что другие с моей проблемой будут здесь, поэтому я отправлю свое решение здесь.

Если пользователи видят что-то вроде этого, при попытке просмотреть отчет:

Crystal Reports Viewer screen shot

затем при настройке данных входа SQL Server для отчета, убедитесь, что вы включили службы имени. Так, например, убедитесь, что вы передаете Crystal «myserver \ myservice» вместо «myserver».

Моя программа имеет возможность доступа к данным с SQL Server, используя только «myserver», но Crystal необходимо предоставить «myserver \ myservice».