初めて投稿させていただきます。。
開発環境
・CrystalReport9
・OSはWindowsXp
・SQLServer2000
・VB6.0
インストーラパッケージを作って展開した後に、Virtual PCを使って動作確認をしているのですがプレビュー表示を何度行っても、CrystalReportが表示されず、「SQLサーバーを開くことが出来ない」と、Reprot Errorが出てしまいます。
解決方法を教えてください!!
よろしくおねがいします。。
まず、原因の切り分けをしましょう。
現状では、
・インストーラパッケージの作り方に関する不具合(配布が足りない等)
・SQLServerの設定不具合(Server 側)
・SQLServerの設定不具合(Client 側)
・プログラムの組み方に由来する不具合
(特定の位置にファイル、フォルダがあることを前提としている等)
・クライアントPC環境に由来する不具合(Virtual PC、プリンタ設定)
・その他
等が考えられます。
ひとつづつ要因をつぶしていってください。
なお、
マルチポスト先にもここと同様に随時進捗報告を行うことを約束してくださいね。
http://www.hirano.cc/cgi-bin/cr/yybbs.cgi
もげさん
コメントありがとうございます。。
インストーラを作成後にこのエラーが出るので、インストーラパッケージの配布で、なにか足りないのだと思うんですが。。
何が足りないのか分かりません。。
Crystal Reportなので、crviewer.dllなどを配布してるのですがエラーが出てしまいます。
> インストーラを作成後にこのエラーが出るので、
クライアントPCでの実行時ではなく、
インストーラを作成した後に開発環境で出るのですか?
>何が足りないのか分かりません。。
貴殿がどんな環境でアプリを作って、どこに何を配布しているのかは、
当方にはわかりませんので、
・開発環境のOS、サービスパックは?
・問題がある実行環境のOS、サービスパックは?
・VB6.0のサービスパックは?
・そのプログラムでどんな処理を行っているのか?
・SQLServerへはどのようにアクセスしているのか?
(ADOで SQLServer OLDDBプロバイダなのかODBCなのかその他か)
・「SQLサーバーを開くことが出来ない」エラーが
どの時点(プログラムのどの行)出ているのか特定できているのか?
・インストーラは何を使ってどの様にパッケージを作成したのか?
・上記の結果、何を配布しているのか?
(ディストリビューションウィザードならSetup.lstの内容を)
を
詳細かつ具体的に説明いただけますか?
もげさん
自分のPCの環境は。
開発環境
・CrystalReport9
・OSはWindowsXp サービスパック2
・SQLServer2000 ODBCでアクセスしてます。
・VB6.0 サービスパック4
持出管理システムという社内システムを作成しています。
コード上では、一度検索をかけた後プレビューボタンを押したときにCrystal Reportsを表示させる処理です。。
自分のPCからはエラーが出ませんが、Virtual PCにインストーラパッケージをコピーしてインストールして起動したら、「SQLサーバを開くことが出来ません」とエラーが出ます。。
コードです。。↓
'レポート出力処理
Private Sub Preview(Optional ByVal ToWindow As Boolean = True)
On Error GoTo Err_Preview_Click
'宣言
Dim lngRecCnt As Integer
Dim strSql As String
Dim strWhere As String
Dim strErrMsg As String
Dim lngRtn As Long
Dim blnCancel As Boolean
Dim strWndTitle As String
Dim strRptName As String
Dim strWkTbl As String
Dim blnFlgExpense As Boolean
Dim i As String
Dim j As String
blnCancel = False
'マウスを砂時計に設定
Me.MousePointer = vbArrowHourglass
'持出登録一覧
strSql = "select * From MochiListView "
'最初にwhere句の始まりを格納
strWhere = " WHERE"
If Trim(imtMochi.Text) <> "" Then
strSql = strSql & strWhere & " 持出番号 = " & CInt(Trim(imtMochi.Text))
strWhere = " AND"
End If
If cmdMochimei.ListIndex > 0 Then
strSql = strSql & strWhere & " 場所ID = " & CInt(cmdMochimei.ItemData(cmdMochimei.ListIndex))
strWhere = " AND"
End If
If cmdBihinmei.ListIndex > 0 Then
strSql = strSql & strWhere & " 備品番号 = " & CInt(cmdBihinmei.ItemData(cmdBihinmei.ListIndex))
strWhere = " AND"
End If
If cmdSyain.ListIndex > 0 Then
strSql = strSql & strWhere & " 社員ID = " & CInt(cmdSyain.ItemData(cmdSyain.ListIndex))
strWhere = " AND"
End If
If cmdKubun.ListIndex > 0 Then
strSql = strSql & strWhere & " 区分ID = " & CInt(cmdKubun.ItemData(cmdKubun.ListIndex))
strWhere = " AND"
End If
If IsNull(imdMochidasi.Value) = False Then
strSql = strSql & strWhere & " 持出日 >= '" & CDate(imdMochidasi.Value) & "'"
strWhere = " AND"
End If
If IsNull(imdHenkyaku.Value) = False Then
strSql = strSql & strWhere & " 返却完了日 <= '" & CDate(imdHenkyaku.Value) & "'"
strWhere = " AND"
End If
If grd_mochi_list.Row <> 0 Then
strSql = strSql & strWhere & " 持出番号 = " & grd_mochi_list.TextMatrix(grd_mochi_list.Row, 1) & strWhere & " 詳細番号 = " & grd_mochi_list.TextMatrix(grd_mochi_list.Row, 2)
strWhere = " AND "
End If
'Order
strSql = strSql & " ORDER BY 持出番号 "
'作業テーブル名
strRptName = ReportName
blnFlgExpense = False
' --- レポート出力 ---
m_strReportPath = App.Path 'レポートファイルへのパス設定
crReport.DiscardSavedData = True 'レポートに保存されているデータを破棄
crReport.ReportFileName = m_strReportPath & "\" & strRptName 'レポートファイルの場所を指定
crReport.WindowTitle = strWndTitle 'ウインドウのタイトル
crReport.WindowState = crptMaximized 'ウインドウを最大化
crReport.WindowShowCloseBtn = True '閉じるボタンを表示
crReport.WindowShowExportBtn = False 'エクスポートボタンを非表示
crReport.WindowParentHandle = MN_Main.hwnd '親ウィンドウのハンドル
crReport.Connect = "DSN = KENGO;UID = sa;PWD = kengo666;"
crReport.SQLQuery = strSql
If IsNull(imdMochidasi.Text) = False Then
If IsNull(imdHenkyaku.Text) = False Then
crReport.Formulas(0) = "持出日 = '" & imdMochidasi.Text & "'"
crReport.Formulas(1) = "返却完了日 = '" & imdHenkyaku.Text & "'"
End If
End If
If ToWindow = True Then
'レポートの出力先をウインドウに設定
crReport.Destination = crptToWindow
Else
'--- 印刷ダイアログを表示 ---
On Error Resume Next
cdlPrint.CancelError = True
cdlPrint.ShowPrinter
cdlPrint.PrinterDefault = True
If Not Err.Number = cdlCancel Then
'レポートの出力先をプリンタに設定
crReport.Destination = crptToPrinter
Else
GoTo ExitProc
End If
End If
On Error GoTo Err_Preview_Click
'レポートを表示
lngRtn = crReport.PrintReport
'エラーの有無を確認
If lngRtn <> 0 Then
strErrMsg = crReport.LastErrorString 'エラー文字列を取得
Call MsgBox(strErrMsg, vbOKOnly + vbExclamation, "ReportError")
End If
crReport.SelectionFormula = ""
ExitProc:
'マウスポインターを元に戻す
Me.MousePointer = vbDefault
Exit Sub
Err_Preview_Click:
Call ErrMsg
End Sub
インストーラは、Visual Studio Installeを使用してます。
いくつかタスク一覧に、説明エラー?が出てたのですがそれを取り除いてビルドをかけて、インストーラパッケージを作りました。。
配布している項目をのせておきます。
①ファイルシステムのアプリケーションフォルダ
calcx60.dll
calndr60.ocx
cont3d60.ocx
craxddrt.dll レジストリに登録
craxdrt.dll レジストリに登録
crtslv.dll レジストリに登録
crviewer.dll レジストリに登録
crxf_rtf.dll
crxlat32.dll
cselexpt.ocx
dao360.dll
date60.ocx
datex60.dll
ExportModeller.dll レジストリに登録
finanx60.dll
holyx60.dll
imbase6.dll
imshare6.dll レジストリに登録
mask60.ocx
nmlite60.ocx
number60.ocx
p2bbnd.dll
p2bxbse.dll
P2lsql.dll
p2sifmx.dll
p2soledb.dll
p2sora7.dll
p2ssql.dll
p2ssyb10.dll
pg32conv.dll
PR_Basyo.rpt
PR_Bihin.rpt
PR_Kubun.rpt
PR_Mochi.rpt
PR_Syain.rpt
s2sqlprs.dll
sscsdk80.dll
text60.ocx レジストリに登録
time60.ocx
todg6.ocx
tzonex60.dll
u252000.dll
u25dts.dll
u2dapp.dll
u2ddisk.dll
u2dmapi.dll
u2dnotes.dll
u2dpost.dll
u2dvim.dll
u2fcr.dll
u2fhtml.dll
u2fodbc.dll
u2frec.dll
u2fsepv.dll
u2ftext.dll
u2fwks.dll
u2fxls.dll
u2l2000.dll
u2lcom.dll
u2ldts.dll
u2lsamp1.dll
持出管理システム.exe
②ファイルシステムのWindowsファルダ
crpe32.dll
crpe32_res_jp.dll
crystl32.ocx レジストリに登録
implode.dll
p2bdao.dll
p2ctdao.dll
p2irdao.dll
p2ixbse.dll
p2lodbc.dll
p2smon.dll
p2smon.dll
p2sodbc.dll レジストリに登録
scrrnjp.dll
scrrun.dll
vb5db.dll
そして、ユーザーのスタートメニューにインストーラを展開した後に作られる持出管理システムのショートカットがあります。。
WindowsXPの場合、VB6.0のサービスパックは5以上(6を推奨)にしてください。
・問題がある実行環境のOS、サービスパックは?
・「SQLサーバーを開くことが出来ない」エラーが
どの時点(プログラムのどの行)出ているのか特定できているのか?
はどうですか?
> crReport.Connect = "DSN = KENGO;UID = sa;PWD = kengo666;"
・実行環境にDSNは登録してありますか?
・VirtualPC内の仮想PC実行環境からSQLServerへ接続できていることは確認しましたか?
もげさん
色々バーチャルPCの設定を変えたら、レポート表示されました。。。
ご指導ありがとうございました。。
ツイート | ![]() |