教えて下さい。
VB6+oo4o を利用していたプログラムを修正しているのですが、
ORACLE6 のLONG型フィールドに 文字列を格納しているのですが、
= オブジェクト.Field("LONG型の項目")
にて取得すると 「クライアントから切断されました」と表示され
VB自体がアプリケーションエラーにて 終了してしまいます。
項目の中に入っているデータ長が長い場合に発生している様にみえますが、
対応方法(取得方法)がわかりません。
ご存じの方がいらしたらご教授願います。
よろしくお願いいたします。
> ORACLE6
うわぁぉ。(^^;
> ORACLE6 のLONG型フィールドに 文字列を格納しているのですが、
格納は上手くいったのですね?
> = オブジェクト.Field("LONG型の項目")
OraField オブジェクトのプロパティを利用していないという事は、
Set obj = オブジェクト.Field("LONG型の項目")
のように、OraField オブジェクトそのものを取得している部分でしょうか?
> にて取得すると
GetChunkメソッド の引数は、どのように指定していますか?
お返事有難う御座います。
申し訳御座いません。 oracle6と記載しましたが、oracle9でした。
過去のプログラムの修正なので、調べてみましたが、
ワークエリア = = オブジェクト.Field("LONG型の項目")
と記載すると アプリケーションエラーとなります。
GetChunkメソッドは そのメソットを使う前に
oracle.Field.Value が isnull?という様なチェック項目を通過
した時点で同様のエラーになってしまいます。
以上 宜しくお願い致します。
お世話になります。
続報ですが GetChunkByteメソットを使ってみました。
GetChunkByte の引数のサイズを 0,32768としてみましたが
同様の結果になってしまいました。
以上 よろしくお願いいたします。
> ワークエリア = = オブジェクト.Field("LONG型の項目")
= = って?
Fields ではなく、Field?
オブジェクトって、具体的には何のことでしょう?
OraField オブジェクトそのものの取得であるならば、
取得には、必ず「Set」を使わねばなりません。
そうではなく、フィールド値の取得(Let)であるならば、
上記は NG です。OraField のプロパティ経由で値を得る必要があります。
oo4o は、DAO/ADO の場合と違って、デフォルトプロパティの実装が
微妙に異なるので、直接 OraField から値を読み書きしようとすると
失敗します。(偶然うまくいくこともありますが、それに頼るべきではない)
あと、VB そのものがクラッシュするような状況に置いては、
Oracle サポートに問い合わせて、最新の Oracle Client の
修正パッチがリリースされていないか、問い合わせるのも手かと。
ツイート | ![]() |