Я использую следующий метод, который находится в классе, для загрузки информации о входе в систему 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