ошибка при попытке загрузить информацию для входа в систему для отчетов Crystal во время выполнения - PullRequest
0 голосов
/ 05 августа 2020

Я использую следующий метод, который находится в классе, для загрузки информации о входе в систему Crystal Reports во время выполнения (VB. Net, SQL Server, Crystal Reports). База данных находится в другом P C моей локальной сети. Это правильно работает в моей среде разработки и исходном сервере базы данных. (dbUsername, dbPwd, serverName, dbName - переменные)

Public Shared Sub Impersonate(ByVal myRpt As ReportDocument)
    ' Set the login info dynamically for the report
    Dim username As String = (dbUsername)
    Dim password As String = (dbPwd)
    Dim Server As String = (serverName)
    Dim Database As String = (dbName)
    Dim logonInfo As New TableLogOnInfo

    Dim table As Table

    For Each table In myRpt.Database.Tables
        logonInfo = table.LogOnInfo
        logonInfo.ConnectionInfo.ServerName = Server
        logonInfo.ConnectionInfo.DatabaseName = Database
        logonInfo.ConnectionInfo.UserID = username
        logonInfo.ConnectionInfo.Password = password
        table.ApplyLogOnInfo(logonInfo)
        table.Location = Database & ".dbo." & table.Name
    Next table
End Sub

Я использую указанный выше метод при загрузке отчетов следующим образом.

Dim crepDailSalSum As New repDailySaleSummary      ' Declaring a new crystal report
CReportAuthentication.Impersonate(crepDailSalSum)  ' Loading the logon info

Позже я установил новый сервер базы данных и разрешил удаленное соединение и произвел необходимые настройки, чтобы разрешить соединения TCP / IP. Теперь все остальные функции программы работают, кроме отчетов. Когда я пытаюсь просмотреть или распечатать отчет, я получаю следующую ошибку:

введите описание изображения здесь

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

Я использую следующую строку подключения, которая находится внутри модуля. (Я не использую DSN).

Public connString As String = "Data Source=SQLSERVER\SLMA;Database=POS_DB;User Id=sa;Password =xxxxxxxx;" 'global connection string

1 Ответ

0 голосов
/ 05 августа 2020

После некоторого тестирования я обнаружил, что с кодом все в порядке. Проблема была в порту сервера базы данных. Его можно решить следующим образом: от

Go до

  • Sql Диспетчер конфигурации сервера
  • Sql Конфигурация сети сервера
  • Протоколы
  • Свойства TCP / IP
  • Вкладка IP-адреса
  • IP All
  • Измените TCP-порт на 1433 под IP All

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

...