Динамическое изменение подключения Crystal Reports 8.5 к SQL Server 2005 в VB6

Нам нужно подключить некоторые Crystal Reports 8.5 к базе данных SQL Server под MS Windows 7, 64-битной. Запрос не обрабатывается кодом VB6 нашего приложения, но включен в Отчеты, и к тому времени мы хотели бы избежать передачи в Отчеты данных, извлеченных из кода, потому что мы должны глубоко изменить все Отчеты. Поскольку приложение будет установлено в разных местах, где данные о соединении будут различаться, нам нужно изменить эту информацию во время выполнения с помощью кода vb6, чтобы в отчетах указывались соответствующие данные. Это тестовый код, который мы используем:

    Dim nTables As Integer
    Dim iCount As Integer
    Dim iRitCW As Integer


    '-----> Ritorno msgBox
    Dim RitMsg As Integer
    Dim sRitCW As String * 255

    jobnum = 0

    If PEOpenEngine() = False Then
        MsgBox "Errore Engine"
    End If

    jobnum = PEOpenPrintJob("c:\test\report1.rpt")

'Declarations
Dim logonInfo As PELogOnInfo

logonInfo.StructSize = PE_SIZEOF_LOGON_INFO
logonInfo.ServerName = "dellone\sqlexpress2005" + Chr(0)
logonInfo.DatabaseName = "TEST" + Chr(0)
logonInfo.UserID = "sa" + Chr(0)
logonInfo.Password = "sasasa_2005" + Chr(0)

If (PELogOnServer("p2smon.dll", logonInfo) = False) Then
        MsgBox "Connessione fallita", vbExclamation, NomeApplicazione
        iRitCW = PEGetErrorCode(jobnum)
        RitMsg = MsgBox("Errore n. : " + Str(iRitCW), vbExclamation, NomeApplicazione)
        End
End If

nTables = PEGetNTables(jobnum)

For iCount = 0 To nTables - 1
    If PESetNthTableLogOnInfo(jobnum, iCount, logonInfo, True) = False Then
        MsgBox "Errore : PESetNthTableLogOn", vbExclamation, NomeApplicazione
Screen.MousePointer = 0
        Exit Sub
    End If
   If (PETestNthTableConnectivity(jobnum, iCount) = False) Then
      MsgBox ("Errore nella connessione per la tabella:" & iCount)
   End If
Next iCount



      If PEOutputToPrinter(jobnum, 1) = False Then
MsgBox "Stampa del documento fallita", vbExclamation, NomeApplicazione
Screen.MousePointer = 0
Exit Sub
End If

    If PEStartPrintJob(jobnum, True) = False Then
        MsgBox "Stampa in anteprima fallita", vbExclamation, NomeApplicazione
        iRitCW = PEGetErrorCode(jobnum)
        RitMsg = MsgBox("Errore di stampa n. : " + Str(iRitCW), vbExclamation, NomeApplicazione)
        Exit Sub
    End If
Screen.MousePointer = 0

Обычно сообщается об ошибке 536 на PELogonServer и 599 после PEStartPrintJob. Поэтому мы спрашиваем, синтаксически ли правильны данные, которые мы используем для инициализации структуры данных logoninfo. Если строка ServerName должна быть экранирована каким-либо особым образом. Мы запрашиваем подтверждение о dll, который мы используем ("p2smon.dll") в функции PELogOnServer, тогда как мы безуспешно пытались с "p2ssql.dll", и любые дальнейшие объяснения, которые могут помочь нам решить проблему.

заранее спасибо

0 ответов

Другие вопросы по тегам