- 締切済み
ACCESS2003 実行時エラー
初めてmsn相談箱を利用させていただきます。 今、大変困っています。 ・現象 ACCESS2003 VBA DB.EXECUTE "DELETE * FROM C20_FILE"で 実行時エラー3156 ODBC--リンクテーブル"C20_FILE"での削除に失敗しました。 とダイアログがでてとまってしいます。 ・正常動作実績 OS:Windows XP SP3 msjet40.dll : 4.0.9511.0 msjetoledb40.dll : 4.0.9502.0 ODBC Driver : Oracle in OraHome92 (9.02.00.00) ACCESS2003 DB : Oracle 9i R2 (9.2.0.1.0) 上記の環境では、問題なく動作しています。 ・エラーがでる環境 サーバOS : Windows Server 2008 R2 Standard(64bit) クライアントOS : Windows 7 Professional(32bit) DB : サーバ Oracle Database 11g R2(11.2.0.1.0) for Microsoft Windows(32bit) クライアント Oracle Database 11g R2 Client (11.2.0.1.0) forMicrosoftWindows(32bit) ACCESS2003 msjet40.dll : 4.0.9756.0 msjetoledb40.dll : 4.0.9756.0 ODBC Driver : Oracle in OraClient11g_home1 (11.02.00.01) ODBC接続は正常です。 ACCESS2003 オブジェクトのテーブルからリンクテーブルC20_FILEを開いて 全レコードを削除しようとすると ODBC--リンクテーブル"C20_FILE"での削除に失敗しました。 [Oracle][ODBC][Ora] ORA-01483 : DATEまたはNUMBERバインド変数の長さが 無効です。(#1483) とエラーがでたり、ACCESSに問題が発生しました。とでて ACCESS2003が終了したりと一定ではありません。 ・調査 自分なりに色々のサイトを探してみたのですが、これだ!!と思うのが見当たり ません。 何卒どうか、どなたか助けてください!!!自分は、OS、ORACLE等は初心者です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hisappy
- ベストアンサー率46% (184/392)
その手のエラーで私が経験したことあるものとして思い浮かぶのは… 当該処理を行っているループ、 もしくはそのエラーが発生するまでに行っていた処理において アクセス-オラクル間でのコネクト(接続)とディスコネクト(切断)の 対応がずれている(個数が合わない)ために DBとのコネクトが張りっ放しになっているものがあり DBの管理(この場合はODBC?)可能な範囲を超えてしまった。 というのが考えられます。 つまり「中途半端に処理が残ったまま」になっているため 「ODBC周辺の処理が手におえなくなった」為にエラーとなったようです。 システム屋さんでは「口を開けっ放しだった」という方言がありますが。。。 この原因の場合の特徴は、 「電源を入れてから全く同じ手順で操作すると同じ辺りでエラーになるけれど、 そうでない操作順序の場合は前触れなくいきなりコケる。」 というものです。 質問文に「全レコード削除」とありますが、 格納されているレコード件数によってコケるタイミングがバラバラなのではないでしょうか。 また、同じ件数を登録していても 「全件を一度に登録した後の場合」と「分割して登録した後の場合」とで コケ具合も変わってくると思います。 さらに、逆に (例)「データ更新処理をはさむと、いくらやってもエラーにならない」 といった症状にもなったりします。 調べる時には、どこでコネクトしてどこでディスコネしているかの確認が必要なので ロジックの頭と後ろという結構広い範囲での見直しが必要です。 さて、私がプロファイルした犯人像(エラーの原因)は 逮捕(デバッグ)の手がかりになるでしょうか?
お礼
ご返事が大変遅くなってしまい本当に申し訳ございません。 ご回答いただきありがとうございます。 しかし、決定的な対処方法がいまだにわかりません。 全レコードといっても10件程度のテーブルですし・・・ 私が不安なのは、そもそもWindows Server 2008R2(64BIT)にOracle 11g R2(32bit)を インストールしてもよいのか?とWindows7 Pro(32bit)にAccess2003で稼動するのか?の 2点がわかりません。 いずれにせよ、つたない質問にご回答くださって大変ありがとうございました。