1

一部のCrystalReports8.5をMSWindows7、64ビットのSQLServerデータベースに接続する必要があります。クエリはアプリケーションの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」と問題の解決に役立つ可能性のある詳細な説明を試しましたが、成功しませんでした。

前もって感謝します

4

0 に答える 0