cancel
Showing results for 
Search instead for 
Did you mean: 

「Database Connector エラー:"」のエラーによりプレビュー表示、印刷が行えない。

Former Member
0 Kudos

WindowsXPからVISTAへ開発環境の移行を行っております。

XP環境

VB6.0SP5

Spread3.0J

InputMan6.5J

CrystalReports8.5

VISTA環境

VB6.0SP6

Spread7.0J

InputMan7.0J

CrystalReportsXI R2 SP4

クリスタルレポートはOCX(Crystl32.OCX) から RDC へ変換していますが、あるファイルでプレビュー表示しようとすると「Database Connector エラー:"」のエラーメッセージが表示されプレビュー表示出来ません。

プレビュー表示なしで直接印刷しようとしても同じエラーが表示されます。

印刷時はaccessファイルのローカルテーブルからデータを読み込んでいるのですが、何か原因をつきとめる方法などありますでしょうか。

ちなみにXP環境では問題なく表示されます。

アドバイスよろしくお願いいたします。

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Access データファイルに直接利用しているわけですか。

どのようなコードでデータベースの接続していますか。

例えば、ODBC または、OLE DB 経由で接続してみたら現象は改善しますか。

Former Member
0 Kudos

ローカルにあるACCESS(MDB)をクリスタルレポートで参照させています。

処理の流れとしては以下になります。

**ここから*****************************

 'ACCESSの初期化

If USR_LS_TANA_INIT() = False Then

Exit Sub

End If

 u2019スプレッドから画面データを取得しMDBを更新

For W_CNT = 1 To SPS_LEASE.MaxRows Step 1

SPS_LEASE.Row = W_CNT

Call USR_MDB_SQL(W_CNT)   u2019SQL生成部分

M_RTN = MDB_UPDT(P_MDB_DSN, M_SQL)  u2019MDB更新

If M_RTN <> 0 Then

M_MSG1 = "情報の作成に失敗しました。(" & W_CNT & ")件目"

M_MSG2 = "(" & M_RTN & ")"

Call KYO_MSGBOX("A", M_MSG1, M_MSG2, M_RESP)

Exit Sub

End If

Next W_CNT

Call MDB_CLOSE(P_MDB_DSN)

 u2019クリスタルレポート印刷の実行

Report.PrintOut False

**ここまで******************************

Former Member
0 Kudos

データベースの更新は行われているようですが、Crystal Reports 側でのデータベースの接続処理は行われていないように見えますが・・

RDC では、以下のような記述でデータベースに接続します。

Report.Database.Table(1).ConnectionProperties.item(u201CDatabase Nameu201D)= App.Path & u201C\xtreme.mdb"

Former Member
0 Kudos

24x7 様

あれから「Database Connector エラー:"」のエラーは解決出来ないため、似たような帳票をサンプルに再作成

しました。これによりエラーが出ないようになりました。.DSRファイルに問題があったのか詳しい原因がわから

ない状態ですが、検証をすすめることにしましたが不具合が見つかりました。

それはシステム起動後、照会画面でデータを検索し画面表示されているデータを帳票を印刷するという作業の流れで

1回目は画面表示されているデータを印刷するのですが、2回目以降別のデータを検索し印刷しても1回目に検索

したデータで帳票が印刷され、クリスタルレポート側のデータが更新されていないような状態です。

そこで前回教えていただいたソースに再度挑戦してみたのですが、「インデックスが有効範囲にありません。」のエラー

が表示されます。いろいろ変更してやってみるのですが、「メソッドまたはデータ メンバが見つかりません。」のエラーが

出たりでなかなか上手く行かない状況です。

ヘルプを検索して以下のソースを追加してみましたが、まれに上記と同じ不具合が発生してしまいます。

**ここから*************************

Dim dbTable As CRAXDRT.DatabaseTable

For Each dbTable In Report.Database.Tables

dbTable.Location = dbTable.Name

Next

**ここまで*************************

アドバイスよろしくお願いいたします。

former_member583013
Active Contributor
0 Kudos

UEYAMA 様、

まず確認ですが、

>ちなみにXP環境では問題なく表示されます。

と書かれているのは、OCX で作成したアプリケーションが動作しているのが XP 環境という意味であって、RDC で作成したアプリケーションが XP では動作しているが、VISTA では動作しないという意味 ではない ですよね。

ミスリードを招く表現なので、何が動いて、何が動かないかを正確にお知らせください。

一番最初のサンプルコードに RDC に関連するコードが全く含まれていない等、RDC についての習得度が十分ではないように思われます。DB ログオンの問題が解決出来たとしても、他の問題が発生する事が考えられますので、まずはサンプルアプリケーションで使い方を確認することをお勧めします。

[Business Objects Software Download|http://service.sap.com/sap/bc/bsp/spn/bobj_download/main.htm] のページに行き、Software Products に Crystal Reports を選択、Product Version に 10 を選択、Software Type に sample を選択して[Search] をクリックしてください。検索結果から "RDC10 Sample Apps for the Desktop" をダウンロードし、実行するか WinZip などで展開してください。RDC のサンプルが zip で含まれています。

API のオンラインマニュアルが無い場合は [Developer Library|http://devlibrary.businessobjects.com/BusinessObjectsXIR2/ja/ja/RDC_SDK/default.htm] からダウンロードしてください。

なお、RDC は XI R2 のリリース時に「利用は非推奨」となっており、.NET または Java への移行を推奨しています。また、制限もいくつか存在しますので、関連ドキュメントをご確認ください。

SCN フォーラムモデレーター

Former Member
0 Kudos

Naoto Miyahara 様

ご返答ありがとうございます。

ご指摘のように

XP 環境ではOCX .RPTファイル

VISTA環境ではRDC .RPTファイル

環境が変わっても同じ.RPTファイルを移行して使用しようとしております。

XP環境でRDCを利用してことはありません。

最近になってRDCの存在を知り、OCXについて詳しい訳でもないためRDCでは

なおさらよくわからない状態です。

まずは教えていただいたサンプルアプリケーションで使い方を確認してみます。

ありがとうございます。

former_member583013
Active Contributor
0 Kudos

8.5 から R2 への移行で一つ注意点があります。

V9 から内部処理は Unicode となっています(8.5 は MBCS)。自動でコード変換を行うのですが、念のために R2 の Report Designer で上書き保存をしてください。

なお、V9 以降で一度保存すると 8.5 では利用できなくなりますので、.rpt のバックアップを取るか、コピーした物を利用する事をお勧めします。

SCN フォーラムモデレーター

Former Member
0 Kudos

ご指摘ありがとうございます。

ところで前回教えていただいたURL:Business Objects Software Download

(http://service.sap.com/sap/bc/bsp/spn/bobj_download/main.htm) を表示し

ようとすると白色の画面のままで画面が展開しません。

http://service.sap.com/

を先に開き「Software Download」を選択するとユーザID、パスワードの入力を

求められます。

これはソフトウェア購入後、ユーザ登録すれば発行されるものなのでしょうか。

おわかりであればご教授下さい。

ソフトウェア購入先にも問い合わせる予定です。

Edited by: KATSUHIRO UEYAMA on Dec 16, 2008 2:47 AM

former_member583013
Active Contributor
0 Kudos

一般ユーザー(P で始まる ID)の方は直接参照出来ないようなので、一度 [Products Portal の Crystal Reports|https://www.sdn.sap.com/irj/boc/crystalreports] に行き、右下の Resources の下から 2 番目の Other Crystal Reports Downloads を選択してください。

なお、SCN/SDN 自体に関するヘルプは全て [SDN サポート(製品サポートチームとは違います)|https://www.sdn.sap.com/irj/sdn/community-support?language=ja] が行います。

弊社代理店様も 1 ユーザーでしかありませんし、モデレーターもフォーラム内のメッセージ整理のみで、SDN サポートが行うべき作業の権限は一切与えられておりません。

一般ユーザー ID でアクセスできないページは基本的に保守契約をお持ちのユーザー様のみアクセス可能とお考えください。

SCN フォーラムモデレーター

Former Member
0 Kudos

Report.Database.Table(1).ConnectionProperties.item(u201CDatabase Nameu201D)= App.Path & u201C\xtreme.mdb"

は、

Report.Database.Tables(1).ConnectionProperties.item(u201CDatabase Nameu201D)= App.Path & u201C\xtreme.mdb"

の間違いでした。失礼しました。

以下のどちらでも動作しましたけど・・

For i = 1 To Report.Database.Tables.Count

Report.Database.Tables.Item(i).Location = App.Path & u201C\xtreme.mdb"

Next

Dim dbTable As CRAXDRT.DatabaseTable

For Each dbTable In Report.Database.Tables

dbTable.Location = App.Path & u201C\xtreme.mdb"

Next

あと、2回目以降は同一データとは、データが保存されたままではないでしょうか。

以下のコードを追加してみてください。

' 保存データの破棄

Report.DiscardSavedData

あと、MDB ファイルを更新しているときは、レポートが利用する前には、必ずデータベースのクローズを実行していないと更新されたデータを取得することはできません。

Former Member
0 Kudos

24x7 様

Naoto Miyahara 様

一応解決することができました。

24x7 様に教えていただいた「.DiscardSavedData」をキーワードにサンプルプログラムを検索

したところ、change_fontsというサンプルプログラムがあり、これをもとに標準モジュールの

追加と以下のコードに変更したところ現象が改善されました。ちなみにこの変更でも

「Database Connector エラー:"」は改善しませんでした。再作成で対処することにします。

Set crxReport = crxApplication.OpenReport(App.Path & "\******.rpt")

crxReport.DiscardSavedData

Set crxDatabase = crxReport.Database

Set crxDatabaseTables = crxDatabase.Tables

For Each crxDatabaseTable In crxDatabaseTables

crxDatabaseTable.Location = App.Path & "\****.mdb"

Next crxDatabaseTable

とりあえずこれで気持ちよく年を越すことが出来ます。

いろいろアドバイスいただきありがとうございました。

Answers (0)