私は最近、SQLサーバーデータベースに接続する古いVisual Basic 6 /CrystalReportsプロジェクトを継承しました。プロジェクトを実行しようとすると表示されるエラーメッセージ(エラー番号-2147191803ここでは文字列が必要です)は、次のコードの.Printoutコマンドに絞り込まれているようです。
'データベースにログインします テーブルの設定=Report.Database.Tables テーブルの設定=Tables.Item(1) Table.SetLogOnInfo ConnName、DBName、user、pass DomainName = CStr(選択済み) 'パラメータフィールドを設定します 'パラメータホルダーを宣言します ParamDefs=Report.ParameterFieldsを設定します 'パラメータオブジェクトを保存します ParamDefsの各ParamDefに対して ParamDefを使用 MsgBox( "ドメイン名:" +ドメイン名) Case.ParameterFieldNameを選択します ケース「会社名」 .SetCurrentValue DomainName 選択を終了 Case.Nameを選択します ケース「{?会社名}」 .SetCurrentValue DomainName 選択を終了 '現在の値に何が割り当てられているかを確認するためのフラグ MsgBox( "paramdef:" + ParamDef.Value) で終わる 次 Report.EnableParameterPrompting = False Screen.MousePointer = vbHourglass 'CRViewer1.ReportSource=レポート 'CRViewer1.ViewReport テスト=1 ** Report.PrintOut ** テスト=テスト+3 currenttime = Str(Now) currenttime = Replace(currenttime、 "/"、 "-") currenttime = Replace(currenttime、 ":"、 "-") DomainName = Replace(DomainName、 "。"、 "") startName = mPath + "\ crysta〜1.pdf" endName = mPath + "\" + DomainName + "\" + DomainName + "" + currenttime + ".pdf" rc = MsgBox( "PDFジョブが終了するのを待つ"、vbInformation、 "H / Wレポート") 名前startNameAsendName Screen.MousePointer = vbDefault 終了する場合
実行中にフォームが表示され、ParamDef変数が「会社名」を設定し、印刷を求めるReport.PrintOut行に到達すると、エラーをスローします。クリスタルレポートを正しく実行するための「会社名」がクリスタルレポートに表示されていないようです。これを診断する方法を知っている人はいますか...vb6またはCrystalReports側で、ここで何が欠けているかを判断しますか?
アップデート:
- DomainNameを文字列にするためにCStr(selected)を挿入しました
- .setcurrentvalue行の上下のforループにmsgboxを挿入しました
- Case "{?Company Name}"ステートメントを挿入して、値の設定に役立つかどうかを確認します
- 他のフォーラムのWebサイトで提案されているように、.AddCurrentValue関数と.SetCurrentValue関数を試しました
- それは私の開発環境であると除外しました。winxpprofsp2で実行されているまったく同じvb6CrystalReports 8.5を使用して別のマシンにロードすると、同じエラーが発生します。
MsgBox(ParamDef.Value)を実行すると、同じ文字列の欠落エラーで空白になります。また、craxdrt.ParameterFieldDefinitionクラスに関するドキュメントが見つからず、他にどのような非表示の関数が使用可能かを確認できます。メソッドとプロパティ変数のリストを見ると、関数の1つとしてSetCurrentValueがリストされていません。これについて何かアイデアはありますか?