Sql server 2005 在VB6中动态更改Crystal Reports 8.5与SQL Server 2005的连接

Sql server 2005 在VB6中动态更改Crystal Reports 8.5与SQL Server 2005的连接,sql-server-2005,vb6,crystal-reports-8.5,Sql Server 2005,Vb6,Crystal Reports 8.5,我们需要将一些Crystal Reports 8.5连接到MS Windows 7下的SQL Server数据库,64位。该查询不是由我们应用程序的VB6代码处理的,而是包含在报告中,同时,我们希望避免将从代码中提取的数据传递到报告,因为我们应该深入修改所有报告。 由于应用程序将安装在不同的位置,其中连接数据会有所不同,因此我们需要在运行时通过vb6代码更改此信息,以便报告指向适当的数据。 这是我们使用的测试代码: Dim nTables As Integer Dim iCoun

我们需要将一些Crystal Reports 8.5连接到MS Windows 7下的SQL Server数据库,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
通常,PELogonServer上报告的错误为536,PEStartPrintJob之后报告的错误为599。 因此,我们询问用于初始化logoninfo数据结构的数据是否正确。如果必须以某种特定方式转义ServerName字符串。我们要求确认我们在PELogOnServer函数中使用的dll(“p2smon.dll”),而我们尝试使用“p2ssql.dll”以及任何可能帮助我们解决问题的进一步解释,但没有成功


提前感谢

您是否在VB6中使用CR8.5查看器?因为这个密码对我来说什么都没说。当我显示报告时,我首先声明Crystal Reports应用程序和报告。作为CRAXDRT的Dim CRAP。作为CRAXDRT.Report的应用程序Dim crRep