ORACLE TECHNOLOGY NETWORK
 
 
   

Oracle Technology Network (OTN) Japan - 掲示板 » テクノロジー » プログラミング一般

スレッド: VB6.0(SP6)とOracle9iでオートメーションエラー

このスレッドに返信する このスレッドに返信する スレッド一覧へ スレッド一覧へ

Permlink 返信数: 30 - ページ数: 3 [ 前へ | 1 2 3 | 次へ ] - 最新投稿 : 2007/02/24 10:42 最新投稿者: 茶太郎 - スレッド表示形式:
naka1306

投稿数: 36
登録日時: 01/08/27


RE[3]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 9:25   M佐藤 さんへの返信です。 M佐藤 さんへの返信です。
  このスレッドに返信します… 返信

M佐藤さん。お返事ありがとうございます。

>エラーの本質が参照先のオブジェクトとの通信が切れてしまったこと(しかも、
>Nothingにはなっていない)なので、理屈上は全てのActiveXコンポーネントで
>発生する可能性があります。
>
>まずはエラーの発生位置を特定することから始めた方がよいように思います。

エラーがどこで発生するかを確認することが必要なのですね。ありがとうございま
す。
ちなみにSessionとかDatabaseとかをNothingしないまま接続や
切断をしてしまうとオートメーションエラーになる可能性もありますでしょうか?
基本的な質問ばかりですみませんが、よろしくお願いします。

naka1306

投稿数: 36
登録日時: 01/08/27


RE[3]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 9:27   ryoichi さんへの返信です。 ryoichi さんへの返信です。
  このスレッドに返信します… 返信

ryoichi さん。お返事ありがとうございます。


>>>「実行時エラー -2147417848 オートメーションエラーです。
>>> 起動されたオブジェクトはクライアントから切断されました」
>>>
>>
>>このエラーはオラクル固有のエラーではありません。
>>
>>OLE(及びその後継技術のActiveX)のコンポーネントとVBアプリケーションの間

>>通信に異常が発生したという意味です。
>
>このエラーって、具体的には、Err.Descriptionの内容ですかね?
>Err.Sourceを表示すれば、その「コンポーネント」が何かわかります。

エラーはおっしゃる通り、Err.Description のことです。
デバッグのときに、Err.Sourceを使ってみますね。アドバイスありがとうございま
す。
取り急ぎ御礼申し上げます。

hoge

投稿数: 11,815
登録日時: 99/03/15


RE[4]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 9:48   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

>エラーがどこで発生するかを確認することが必要なのですね。ありがとうございま
>す。
>ちなみにSessionとかDatabaseとかをNothingしないまま接続や
>切断をしてしまうとオートメーションエラーになる可能性もありますでしょうか?

実際にVB+oo4o+Imputman+Spreadなどで開発しておりますが
oo4oのオブジェクトをnothingしなくてもスコープをはずれた
時点で本来は解放されるはずですのでご提示のエラーになることは
ありません。またコントロールで発生した記憶もあまりありませんね。
別のエラーはいくつか見かけたような・・・--;

独自のActiveXコンポーネントを使用(特にDCOMやネットワーク障害時に)
している場合に見かけることが多いエラーかもしれませんね。

とりあえずM佐藤さんのおっしゃるようにエラー箇所及び原因となるオブジェクト
を特定(すでに特定していると思っていました・・^^;)することが先決ですね。

「終了ボタン押下時」まで特定できているということですので使用する
オブジェクトも限られてくると思います。
現地である程度放置しないと再現しないということであれば
詳細なエラーログを出力するようにしてしばらく様子を見てもよいかもしれません。



naka1306

投稿数: 36
登録日時: 01/08/27


RE[5]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 10:01   hoge さんへの返信です。 hoge さんへの返信です。
  このスレッドに返信します… 返信

hoge さん。いつもありがとうございます。

>実際にVB+oo4o+Imputman+Spreadなどで開発しておりますが
>oo4oのオブジェクトをnothingしなくてもスコープをはずれた
>時点で本来は解放されるはずですのでご提示のエラーになることは
>ありません。またコントロールで発生した記憶もあまりありませんね。
>別のエラーはいくつか見かけたような・・・--;

フォームのNothingも、フォームが終了してしまえばPCのメモリにエリアは
残る場合もあるらしい?ですが、解放はされていたようなんですよね・・・


>独自のActiveXコンポーネントを使用(特にDCOMやネットワーク障害時に)
>している場合に見かけることが多いエラーかもしれませんね。

ちなみにあまり関係はないとは思うのですが
メタフレームを使っていますが、関連ありますでしょうか?


>とりあえずM佐藤さんのおっしゃるようにエラー箇所及び原因となるオブジェクト
>を特定(すでに特定していると思っていました・・^^;)することが先決ですね。
>
>「終了ボタン押下時」まで特定できているということですので使用する
>オブジェクトも限られてくると思います。
>現地である程度放置しないと再現しないということであれば
>詳細なエラーログを出力するようにしてしばらく様子を見てもよいかもしれませ
ん。

エラー箇所のコンポートネントをErr.Sourceをログに落として確認してみますね。
アドバイスありがとうございます。

hoge

投稿数: 11,815
登録日時: 99/03/15


RE[6]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 10:21   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

>フォームのNothingも、フォームが終了してしまえばPCのメモリにエリアは
>残る場合もあるらしい?ですが、解放はされていたようなんですよね・・・

サードパーティ製のいろんなコントロールを使用していたり
それに関わるActiveXオブジェクトを使用している場合は
フォームのNothingは必須ですね。
メモリーリークが起きやすいです。

>ちなみにあまり関係はないとは思うのですが
>メタフレームを使っていますが、関連ありますでしょうか?

私もMetaFrameの開発経験(C/Sから移行しただけですが・・・--;)
があります(というか現在進行形)が特にMetaだからoo4oや他の
コンポーネントがエラーになったということはありませんね。
結局Metaサーバ上でアプリケーションが稼動するので
意識しなければならないのはOSやOracle,oo4oのバージョンを
開発環境とできるだけ合わせて検証することだと思います。
もちろん最終的にはMetaサーバ上での動作確認も必要ですけどね。



naka1306

投稿数: 36
登録日時: 01/08/27


RE[7]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2005/01/25 10:47   hoge さんへの返信です。 hoge さんへの返信です。
  このスレッドに返信します… 返信

hogeさん。いつもお返事ありがとうございます。

>サードパーティ製のいろんなコントロールを使用していたり
>それに関わるActiveXオブジェクトを使用している場合は
>フォームのNothingは必須ですね。
>メモリーリークが起きやすいです。

念のためフォームのNothingも確認してみます。


>私もMetaFrameの開発経験(C/Sから移行しただけですが・・・--;)
>があります(というか現在進行形)が特にMetaだからoo4oや他の
>コンポーネントがエラーになったということはありませんね。
>結局Metaサーバ上でアプリケーションが稼動するので
>意識しなければならないのはOSやOracle,oo4oのバージョンを
>開発環境とできるだけ合わせて検証することだと思います。
>もちろん最終的にはMetaサーバ上での動作確認も必要ですけどね。

hogeさんもメタフレームを導入されていらっしゃるんですね。
VB6やSP6、SpreadSheet、InputManなどパッチも含めて同じ物を
メタサーバーにもインストールしていますが、アプリケーションでの
エラーのようなのでログで確認してみます。
いろいろアドバイス下さいましてありがとうございます。御礼申し上げます。

naka1306

投稿数: 36
登録日時: 01/08/27


RE[8]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:12   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

皆様、ご無沙汰致しております。
同じ問題を抱えている方もいるかと思い、その後のご報告を致します。

VBのコーディングにおいてフォームのNothing命令を入れました。

またDynasetの使用後は必ず Set ダイナセット名 = Nothing
を入れるようにしました。
同様にObject型で宣言しているものは全てNothing命令を入れました。

また、以前までOracle8.0.4を使用していた名残もありまして変数宣言で
Dim OraDyn As Object
とObject型で宣言させていたのを、
Dim OraDyn As OraDynaset
というようにOraDynaset型で宣言するようにしました。

特にoo4oのパッチ適用などはしていないのですがこれだけでも効果があったのか
は特定できないのですがしばらくの間は出てこなくなりました。

問題を発生している方がいらしたらお試し下さい。

naka1306

投稿数: 36
登録日時: 01/08/27


RE[7]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:23   hoge さんへの返信です。 hoge さんへの返信です。
  このスレッドに返信します… 返信

hogeさん、ご無沙汰致しております。その後のご報告を致します。

VBのコーディングにおいてフォームのNothing命令を入れました。

またDynasetの使用後は必ず Set ダイナセット名 = Nothing
を入れるようにしました。
同様にObject型で宣言しているものは全てNothing命令を入れました。

また、以前までOracle8.0.4を使用していた名残もありまして変数宣言で
Dim OraDyn As Object
とObject型で宣言させていたのを、
Dim OraDyn As OraDynaset
というようにOraDynaset型で宣言するようにしました。

特にoo4oのパッチ適用などはしていないのですがこれだけでも効果があったのか
は特定できないのですがしばらくの間は出てこなくなりました。


naka1306

投稿数: 36
登録日時: 01/08/27


RE[3]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:24   ryoichi さんへの返信です。 ryoichi さんへの返信です。
  このスレッドに返信します… 返信

ryouichiさん、ご無沙汰致しております。その後のご報告を致します。

VBのコーディングにおいてフォームのNothing命令を入れました。

またDynasetの使用後は必ず Set ダイナセット名 = Nothing
を入れるようにしました。
同様にObject型で宣言しているものは全てNothing命令を入れました。

また、以前までOracle8.0.4を使用していた名残もありまして変数宣言で
Dim OraDyn As Object
とObject型で宣言させていたのを、
Dim OraDyn As OraDynaset
というようにOraDynaset型で宣言するようにしました。

特にoo4oのパッチ適用などはしていないのですがこれだけでも効果があったのか
は特定できないのですがしばらくの間は出てこなくなりました。


naka1306

投稿数: 36
登録日時: 01/08/27


RE[3]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:25   M佐藤 さんへの返信です。 M佐藤 さんへの返信です。
  このスレッドに返信します… 返信

M佐藤さん、ご無沙汰致しております。その後のご報告を致します。

VBのコーディングにおいてフォームのNothing命令を入れました。

またDynasetの使用後は必ず Set ダイナセット名 = Nothing
を入れるようにしました。
同様にObject型で宣言しているものは全てNothing命令を入れました。

また、以前までOracle8.0.4を使用していた名残もありまして変数宣言で
Dim OraDyn As Object
とObject型で宣言させていたのを、
Dim OraDyn As OraDynaset
というようにOraDynaset型で宣言するようにしました。

特にoo4oのパッチ適用などはしていないのですがこれだけでも効果があったのか
は特定できないのですがしばらくの間は出てこなくなりました。


naka1306

投稿数: 36
登録日時: 01/08/27


RE[3]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:26   Tipo さんへの返信です。 Tipo さんへの返信です。
  このスレッドに返信します… 返信

Tipoさん、ご無沙汰致しております。その後のご報告を致します。

VBのコーディングにおいてフォームのNothing命令を入れました。

またDynasetの使用後は必ず Set ダイナセット名 = Nothing
を入れるようにしました。
同様にObject型で宣言しているものは全てNothing命令を入れました。

また、以前までOracle8.0.4を使用していた名残もありまして変数宣言で
Dim OraDyn As Object
とObject型で宣言させていたのを、
Dim OraDyn As OraDynaset
というようにOraDynaset型で宣言するようにしました。

特にoo4oのパッチ適用などはしていないのですがこれだけでも効果があったのか
は特定できないのですがしばらくの間は出てこなくなりました。


matvie

投稿数: 438
登録日時: 02/05/21


RE[4]:VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2006/08/23 11:44   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

同じコメントを複数付ける必要はありません。
うざいだけ。
他のコメントは削除しましょう。
#辞退



naka1306

投稿数: 36
登録日時: 01/08/27


Re: VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2007/02/22 20:02   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

各位 お世話様です。
実は、先日、Object型で宣言していたのをOraDynaset型に直したらエラーが出なく
なったということをお知らせしました。
しかし、その後事象が再発し、このエラーが出るとVBアプリが落ちてしまう(強制終了)
のです。
そこで皆様に教えて頂きたいのが、
フィールドオブジェクトもObject型からOraFields?型に宣言しなおした方が
良いのでしょうか?
ご指導頂けます様お願い申し上げます。

jakemystar

投稿数: 924
登録日時: 06/10/28


Re: VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2007/02/22 21:16   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

こんばんは。

> フィールドオブジェクトもObject型からOraFields?型に宣言しなおした方が
> 良いのでしょうか?

私の環境ではObject型でも問題ありませんね。
パッチを適用されていないということですので一度パッチを適用して
検証してみてはいかがでしょうか?

うぇいく

投稿数: 5,722
登録日時: 99/12/20


Re: VB6.0(SP6)とOracle9iでオートメーションエラー
投稿時刻: 2007/02/24 10:06   naka1306 さんへの返信です。 naka1306 さんへの返信です。
  このスレッドに返信します… 返信

>フィールドオブジェクトもObject型からOraFields?型に宣言しなおした方が
>良いのでしょうか?
 型の明示化は、根本的な部分で無い気がします。
# 回避策の可能性はありますが、解決先ではないような。
 回避策として、Objectとして扱っている部分を全て本来の型にすることで直る可能性はあるかもしれません。
 型の明示化により現象が変化することを考えると、oo4oもしくはOLE(windowsのコンポーネント)あたりに問題があると考えられますから、そのあたりで、未適用のパッチを適用するもしくは、oo4oが動作のサポートを明示している環境のOLEのバージョンをあわせてみる あたりが効果があるかもしれません(この考えや、後者の方法はマニュアルで保証されているわけではありません。)

# 試行錯誤ではなく、根本的な開発を目指すのであれば、サポートに問い合わせてください。これはあくまでも、1個人の意見です。わざわざ明示するほどのことでもないのですが、書いておかないと、サポートを重要視していないと読み取る人もいるようなので。

 なお、Objectをつかうか、それぞれの型を使うかは、古い/新しいというよりも、性能や可搬性を考慮しての選択です。私の場合には、開発時の初期にはそれぞれの型を用いて、コンパイル時に可能な限りエラーを補足できるようにした上で、一通りのエラーが出なくなった時点でObject型に切り替えたりしています。
# そうすることで、タイプライブラリへの参照を含む必要が無くなり、存在しない場合のエラーの検出をプログラム内で行うことや、ライブラリが存在しない環境でもDBへの接続以外の部分は、動作可能にしたり とできます。






ウェブサイトのご使用条件 | 個人情報保護基本方針/情報保護基本方針