none
Crystalreportsの配布について RRS feed

  • 質問

  •  

    お世話になります。

    VS2005に付属しているCrystalreportsの配布について以下の文面を参考にしてプロジェクトを作成したのですがインストーラを作成し、開発環境を持たないPCで実行するとエラーが発生してしまいます。

    Crystalreportsのユーザ登録は行いました。

    Releaseでコンパイルしています。

     

    http://vsug.jp/tabid/63/forumid/72/postid/8252/view/topic/Default.aspx

     

    以下の二つの環境のPCへ作成したインストーラをインストールし、Crystalreportsのインストーラもインストールしました。

    尚、プロジェクトには以下のアセンブリを追加しています。

    ・CrystalDecisions.Enterprise.Desktop.Report

    ・CrystalDecisions.CrystalReports.Engine

    ・CrystalDecisions.ReportsSource.dll

    ・CrystalDecisions.Shared.dll

    ・CrystalDecisions.web.dll

    ・CrystalDecisions.windows.forms.dll

     

    XPの環境でVB6の開発環境のみが入っているPCで実行した場合

    'CrystalDecisions.CrystalReports.Engine.ReportDocument' のタイプ初期化子が例外をスローしました。

    Dim Obj_CrRpt As New Pbms   の辺りで転けてました。

    VB2005のCrystalreportsをインストールした場合、正常に表示されました。

     

    XPの環境で開発ツールが何も入っていないPCの場合

    The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception

     

    開発環境はVS2005 Architects Version 8.0.50727.762(SP.050727-7600) (VB)です。

     

    どなたか知っておられる方がおられましたらご教授をお願い致します。

     

     

    Code Snippet

        Private Sub Dialog3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'トレース
            grStr_ChekTrace = CprFrmName & " Dialog3_Load"
            grStr_ChekTrace &= "DBコネクション前"

            'レポート初期表示抑止
            CrystalReportViewer1.Visible = False

            'DB接続
            Dim Ole_Conn As OleDb.OleDbConnection = grOle_Conn
            Dim Ole_Cmd As New OleDb.OleDbCommand
            Dim Ole_Reader As OleDb.OleDbDataReader
            Ole_Cmd = Ole_Conn.CreateCommand()

            Ole_Cmd.CommandText = "SELECT * FROM W_DatPassBook ORDER BY INDEX"

            Try
                grStr_ChekTrace &= "DBコネクションExecuteReader前"
                Ole_Reader = Ole_Cmd.ExecuteReader

                Dim Obj_DataSet As New DataSet1()       'XMLスキーマ
                grStr_ChekTrace &= "XMLスキーマOK"
                Dim Obj_DataTbl As New DataTable        'データテーブル作成
                Dim Obj_DataRow As DataRow              'データカラム作成
                Dim Obj_CrRpt As New Pbms               'レポート宣言
                Dim Str_Temp As String = ""             'データチェック

                grStr_ChekTrace &= "DBコネクションOK"

                'グループツリーの無効化
                CrystalReportViewer1.DisplayGroupTree = False
                'A4サイズ
                Obj_CrRpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4
                '横帳票
                Obj_CrRpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape

                grStr_ChekTrace &= "帳票設定OK"
                'レポートデータ初期化
                Obj_DataSet.Clear()
                grStr_ChekTrace &= "レポートクリアOK"

                'カラム作成
                Obj_DataTbl.Columns.Add(New DataColumn("SHIMEI", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("GINKO", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("KOUZA", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("YOKIN", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("KOUZABANGO", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("YOKINYMD", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("RIRITU", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("FUKURI", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("YOKINGAKU", GetType(String)))
                Obj_DataTbl.Columns.Add(New DataColumn("BIKOU", GetType(String)))

                grStr_ChekTrace &= "カラムOK"
                'データが存在する間データを取得します。
                Do While Ole_Reader.Read()

                    'XMLスキマーレコードセット
                    Obj_DataRow = Obj_DataTbl.NewRow()

                    If Str_Temp <> Lib_NullToStr_SQL(Ole_Reader("SHIMEI")) Then
                        Obj_DataRow(0) = Lib_NullToStr_SQL(Ole_Reader("SHIMEI"))
                    Else
                        Obj_DataRow(0) = ""
                    End If
                    Obj_DataRow(1) = Lib_NullToStr_SQL(Ole_Reader("GINKO"))
                    Obj_DataRow(2) = Lib_NullToStr_SQL(Ole_Reader("KOUZA"))
                    Obj_DataRow(3) = Lib_NullToStr_SQL(Ole_Reader("YOKIN"))
                    Obj_DataRow(4) = Lib_NullToStr_SQL(Ole_Reader("KOUZABANGO"))
                    If Lib_IsNull(Lib_NullToStr_SQL(Ole_Reader("YOKINYMD"))) = False Then
                        Obj_DataRow(5) = Lib_GetYMD(Lib_NullToStr_SQL(Ole_Reader("YOKINYMD")), "Y") & "/" & _
                                         Lib_GetYMD(Lib_NullToStr_SQL(Ole_Reader("YOKINYMD")), "M") & "/" & _
                                         Lib_GetYMD(Lib_NullToStr_SQL(Ole_Reader("YOKINYMD")), "D")
                    Else
                        Obj_DataRow(5) = Lib_NullToStr_SQL(Ole_Reader("YOKINYMD"))
                    End If
                    Obj_DataRow(6) = Lib_NullToStr_SQL(Ole_Reader("RIRITU"))
                    Obj_DataRow(7) = Lib_NullToStr_SQL(Ole_Reader("FUKURI"))
                    If IsNumeric(Lib_NullToStr_SQL(Ole_Reader("YOKINGAKU"))) = True Then
                        Obj_DataRow(8) = Format(CLng(Lib_NullToStr_SQL(Ole_Reader("YOKINGAKU"))), "###,###,###,##0")
                    Else
                        Obj_DataRow(8) = Lib_NullToStr_SQL(Ole_Reader("YOKINGAKU"))
                    End If
                    Obj_DataRow(9) = Lib_NullToStr_SQL(Ole_Reader("BIKOU"))

                    'XMLスキマーレコード追加
                    Obj_DataTbl.Rows.Add(Obj_DataRow)

                    'データチェック用
                    Str_Temp = Lib_NullToStr_SQL(Ole_Reader("SHIMEI"))
                Loop

                Ole_Reader.Close()
                grStr_ChekTrace &= "DBクローズOK"
                'DataSourceにDataTableを設定
                Obj_CrRpt.SetDataSource(Obj_DataTbl)
                grStr_ChekTrace &= "クリスタルデータ渡しOK"
                CrystalReportViewer1.ReportSource = Obj_CrRpt
                grStr_ChekTrace &= "クリスタルレポートコールOK"
                'レポート初期表示抑止解除
                CrystalReportViewer1.Visible = True

                'レポートワークデータ削除
                Call Sub_Delete()

            Catch ex As Exception
                'エラーログ
                Call grLib_Cls_Main.Lib_Cls_LogOutPut(grStr_ChekTrace & " OleDbDataReader")
            Finally
                Ole_Cmd.Dispose()
                Ole_Cmd = Nothing
            End Try
        End Sub

     

     

    2008年8月19日 15:00

回答

すべての返信