コミュニケーションコントロールのエラー?


ちゃお  2004-03-30 21:42:42  No: 112582  IP: [192.*.*.*]

はじめまして。
コミュニケーションコントロールを使用したシステムを開発しています。
PortOpenやPort等のプロパティがコード上で参照できなくて困っています。

mscomm1.
まで打った時に表示されるプロパティ、メソッドの一覧にも載っていません。
コミュニケーションコントロールに関するプロパティ、メソッドが何もありません。

mscomm1を右クリックして【定義】とやると、

  「mscomm1」は、現在参照設定されていない "C:\db1.mdb"ライブラリ内にあるため、ここへはジャンプできません。

とメッセージが表示されます。
参照設定を見ても、Microsoft Comm Control 5.0(SP2) のチェックは入っています。

原因、解決方法が分かる方ご教授願います。

環境−
Access2000、VB5SP3、Windows2000

編集 削除
特攻隊長まるるう  2004-03-31 10:56:22  No: 112583  IP: [192.*.*.*]

普通『参照設定』というとオブジェクトライブラリファイルの参照設定の事で
コントロールの追加は『コンポーネントの追加』と言う表現を使ってくださいますか?。
MSComm1 という名前のコントロールをフォームに貼り付けたんですよね?。

VB5 ならオブジェクトブラウザって使えますよね?ツールバー[表示(V)]-[オブジェクトブラウザ]
か[F2]キーでも起動するはず…。
http://www.interq.or.jp/www-user/komurak/progtec/029.htm
<すべてのライブラリ>って表示されてるコンボボックスに『MSCommLib』とか…そんな感じの
ライブラリ名は表示されてますか?。教えてください。
ついでに『Microsoft Comm Control 5.0(SP2)』のチェックをつけた時に参照するファイルの
パスが表示されていませんか?。そのパス(ファイル名)も教えてください。
あと、エクスプローラでそのフォルダを開いて、ファイルのプロパティでバージョンを
確認してください。5.01.4319 (日付 1997/7/19)になってますか?

編集 削除
ちゃお  2004-04-01 21:35:20  No: 112584  IP: [192.*.*.*]

特攻隊長まるるう様 ありがとうございます。
おっしゃる通りフォームにMSComm1というコントロールを貼り付けました。
オブジェクトブラウザにもMSCommLibという物が存在します。
パスですが、
C:\WINNT\SYSTEM32\MSCOMM32.OCX
となっています。
MSCOMM32.OCXのバージョンは5.1.43.19で日付は1977/7/19です。

MSCOMMのポート設定やポートオープンを行う部分で以下のエラーが発生します。
    'ポートの設定、オープン
    Me.MSComm1.CommPort = 1
    Me.MSComm1.Settings = "9600,N,8,1"
    Me.MSComm1.InputLen = 1
    Me.MSComm1.PortOpen = True

    エラー:
    実行時エラー' 438':
    オブジェクトは、このプロパティまたはメソッドをサポートしていません。

オブジェクトライブラリでMSCommLibを選択して、クラス「MSComm」を選択すると、
右側のメンバウィンドウには、CommPort等のプロパティはちゃんと表示されています。

別のフォームでは、上記プロパティが存在しないにも関わらず、エラーが発生しません。
イミディエイトウィンドウで
? Me.MSComm1.CommPort
 1
と表示されてプロパティの設定は出来ているようです。

そのフォームからコントロールとコードをコピーしましたが、同一エラーが発生しました。

なにかシステム上の問題でしょうか?
また、ご教授ください。お願い致します。

編集 削除
特攻隊長まるるう  2004-04-02 18:17:12  No: 112585  IP: [192.*.*.*]

同じ現象が再現できませんので、…まあ、ぶっちゃけ分かりません(ぉ
>なにかシステム上の問題でしょうか?
と言われても幅広いですし(汗)。…そこまで知識はありませんので。
ただ、参照に関しての問題ならボクでもきっかけぐらいは見つかるかなぁ?
といったレベルでの返信ですので詳しく突っ込まないで下さい(苦笑)。
まず、基本的なところから。こちらの環境は[VB6.0(sp5)]ですので
環境的に生じる差異はご了承ください。

デバッグにはエラーの内容の確認が必須ですが、エラーの概略は理解
されてますでしょうか?。…あ。ボクも完全に理解できてるわけでは
ないので概略で結構です。どの辺に目星をつけて調べればいいか?…
ということです。エラーが出たらその内容をヘルプで確認しましょう。
>  「mscomm1」は、現在参照設定されていない "C:\db1.mdb"ライブラリ内にあるため、ここへはジャンプできません。
エラーが表示されている状態でヘルプ表示か、検索で『ライブラリ内に
あるため、ここへはジャンプできません。』くらいをキーに検索して内容を
ご確認ください。で、まぁ、フォームのコントロールは特殊なので
このエラーが出るのは正常だと思うんですが、なぜにライブラリ名が
>C:\db1.mdb
ここが一番の謎です。ちなみにこちらの環境では Unknown1 という
表示になりますが…。
前回調べてもらったことから、コントロールの追加(コンポーネントの追加)
はとりあえず問題ないとしておきましょう。(何が原因か見当がついて
ないので頭の中には残しておいて下さい。)
では、オブジェクトブラウザを立ち上げて <すべてのライブラリ>を
選択。mscomm で検索してもらえますか?MSCommLib の下にコンポーネント
として参照している MSComm クラスが1つ。MSComm1 を貼り付けている
プロジェクトごとに _Form クラスの下に MSComm1 がすべて表示
されましたでしょうか?。では一つ一つ、何かおかしいところは
無いか調べてください。ここは何かがおかしい…だろう(汗)…という
予想しか出来てませんので、慎重に、少しでも変わった事があったら
教えてください。
[検索結果]を1つ選択すると1番下の[説明ペイン]に説明が表示されます。
>WithEvents MSComm1 As MSComm
>  読み取り専用
>   Unknown1._Form のメンバ
緑色でリンクが張られてます。順にクリックして変なところに飛ばないか?
チェックしてください。目指すは"C:\db1.mdb"ライブラリの発見です。
…mdbファイルがここに出ることってあるのかなぁ…ちょっと調べては
いるんですけど…。今のところ見当がついてません。ここが本当に謎。

さて、その他の参照の確認もしておきましょうか。
『コンポーネントの追加』はいいとして、『参照設定』に特別な設定を
されてますか?。…Access のオブジェクトライブラリ参照とか…?
新規プロジェクトを作成した状態と比較して、追加した『参照設定』を
全て挙げてください。プロジェクトの数が複数の場合はそれぞれで確認
してみて下さい。
更に質問の内容を見てると動く場所と動かない場所がある…その違いの
確認もしないといけません。まず、プロジェクトの構成はどうなってますか?
VB6 だとプロジェクトを複数まとめてグループとして設定できますが、
そのような設定にしてます?。複数のプロジェクトがあるならプロジェクト
ごとのプロパティでの設定の違いは?標準 EXE?ActiveX DLL?えとせとらえとせとら…
ダイナミックリンクライブラリ(DLL)タイプライブラリ(TLB)ファイルを
どこかで何か(←全然意味不明だけど…)してないか?とか…アバウト
過ぎますが…何かが原因で違うんじゃないかと…。

場所によって動いたり動かなかったりするって事は、やはり何かの
設定(VB側の)が悪いと思うべきだと思うのです。…が最終的には
根本的な部分からの調査が必要かもしれません。
>なにかシステム上の問題でしょうか?
環境の問題であれば環境を変えてみることですね。OS違うマシンとか
Officeなしの環境とか…。必要最小限の設定(この場合、新規プロジェクト
に MSComm1 1個貼り付けて、正常に動く状態)から順に開発環境に近づけて
いく…少しでも異変があったら(例え動作的に問題なくても)調査する。
時間があったら平行してお願いします。

編集 削除
特攻隊長まるるう  2004-04-02 18:27:00  No: 112586  IP: [192.*.*.*]

…あと、プロジェクトはVB5.0の新規プロジェクトで最初から
作成されたものですか?。
>環境−
>Access2000、VB5SP3、Windows2000
の Access2000 をどういう形で利用してるかがなんか引っかかります。
Access VBA のモジュールか何かを利用してるとか…

編集 削除