[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/08/27(Fri) 19:23
投稿者名:りょう
Eメール:
URL :
タイトル:
ほかのPCから持ってきたVBのプロジェクトがエラーになります
初めて投稿させて頂きます。
よろしくお願いします。


或るPCで作成したVBのプロジェクト(のフォルダー)からすべての内容を他のPCへコピーしたのですが、下記のエラーが出て実行出来ません。
VBはVisual Studio 6.0 SP6です。Access97のMDBへ接続しています。

Microsoft Visual Basic
コンパイル エラー
プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。

と出て、下記が反転表示となります。

Private Sub datPrimaryRS_MoveComplete( _
                ByVal adReason As ADODB.EventReasonEnum, _
                ByVal pError As ADODB.Error, _
                adStatus As ADODB.EventStatusEnum, _
                ByVal pRecordset As ADODB.Recordset _
                )

組み込んでいるコンポーネントのバージョンの問題ではないかとは思うのですが。
何が悪いのでしょうか?よろしくお願いします。

投稿時間:2004/08/27(Fri) 20:48
投稿者名:KIM.J
Eメール:
URL :
タイトル:
Re: ほかのPCから持ってきたVBのプロジェクトがエラーになります
その2台のPCは、OSやACCESS97がインストールされているなどまったく同じ環境なのでしょうか?
参照設定でADOのバージョンを確認してみては?(2台とも)

投稿時間:2004/08/28(Sat) 02:26
投稿者名:りょう
Eメール:
URL :
タイトル:
Re^2: ほかのPCから持ってきたVBのプロジェクトがエラーになります
ご返事頂き有難うございます。

不足していたPCの情報をお知らせします。

コピー元のPCは、

    Windows 98 Second Edition 4.10.2222 A
    Visual Basic 6.0 (SP6)
    For Windows 32-Bit Development
        参照設定: Microsoft ActiveX Data Objects 2.1 Library
                   Microsoft ActiveX Data Objects Recordset 2.5 Library
                   Microsoft ADO Ext. 2.5 for DLL and Security

    Access 97 SR-1

    C:\Windows\System\MSADODC.OCX
        サイズ     : 129KB
        タイム・スタンプ: 2004/03/09 0.00
        Ver.       : 6.0.81.71

です。

コピー先は、

    Windows ME 4.90.3000

    Visual Basic 6.0 (SP6)
    For Windows 32-Bit Development
        参照設定: Microsoft ActiveX Data Objects 2.1 Library
                   Microsoft ActiveX Data Objects Recordset 2.5 Library
                   Microsoft ADO Ext. 2.5 for DLL and Security

    Access 97 SR-1

    C:\Windows\System\MSADODC.OCX
        サイズ     : 129KB
        タイム・スタンプ: 2004/06/24 0.00
        Ver.      : 6.1.97.82

です。

Windowsが異なるためか、MSADODC.OCXが異なるようです。

Visual Studioは、同じCD-ROMからインストールし、
同じサービスパック・ファイルをダウンロードして、
アップデートしたものです。

何故このような違いが出るのか、皆目検討が付きません。
よろしくお願いします。

投稿時間:2004/08/27(Fri) 21:17
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ほかのPCから持ってきたVBのプロジェクトがエラーになります
# 結構、有名な問題かも。

ADO自体は、タイプライブラリによって下位互換性を保っていますが、
コンパイル前のソースを扱う場合には、下記のような注意が必要です。
hhttp://support.microsoft.com/default.aspx?scid=kb;ja;195049

投稿時間:2004/08/28(Sat) 10:17
投稿者名:りょう
Eメール:
URL :
タイトル:
Re^2: ほかのPCから持ってきたVBのプロジェクトがエラーになります
ご返事頂き有難うございます。

結果のご返事が遅くなってしまいました。すみません。

ご提示頂きましたURLを参考に、今回の場合どのようにするべきか良く分からなかったのですが、
下記のようにしてみましたが状況に変化は有りませんでした。

Private Sub datPrimaryRS_MoveComplete( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset20 _
)

念の為、更に、

Private Sub datPrimaryRS_MoveComplete( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset21 _
)

ともしてみましたが、これでは、
これでは、ユーザー定義型は定義されていません、
となります。

不足していたPCの情報をお知らせします。

コピー元のPCは、

    Windows 98 Second Edition 4.10.2222 A
    Visual Basic 6.0 (SP6)
    For Windows 32-Bit Development
        参照設定: Microsoft ActiveX Data Objects 2.1 Library
                   Microsoft ActiveX Data Objects Recordset 2.5 Library
                   Microsoft ADO Ext. 2.5 for DLL and Security

    Access 97 SR-1

    C:\Windows\System\MSADODC.OCX
        サイズ     : 129KB
        タイム・スタンプ: 2004/03/09 0.00
        Ver.       : 6.0.81.71

です。

コピー先は、

    Windows ME 4.90.3000

    Visual Basic 6.0 (SP6)
    For Windows 32-Bit Development
        参照設定: Microsoft ActiveX Data Objects 2.1 Library
                   Microsoft ActiveX Data Objects Recordset 2.5 Library
                   Microsoft ADO Ext. 2.5 for DLL and Security

    Access 97 SR-1

    C:\Windows\System\MSADODC.OCX
        サイズ     : 129KB
        タイム・スタンプ: 2004/06/24 0.00
        Ver.      : 6.1.97.82

です。

Windowsが異なるためか、MSADODC.OCXが異なるようです。

Visual Studioは、同じCD-ROMからインストールし、
同じサービスパック・ファイルをダウンロードして、
アップデートしたものです。

何故このような違いが出るのか、皆目検討が付きません。
よろしくお願いします。

投稿時間:2004/08/28(Sat) 22:32
投稿者名:だい
Eメール:dee_bassist@hotmail.com
URL :
タイトル:
Re^3: ほかのPCから持ってきたVBのプロジェクトがエラーになります
> コピー元のPCは、
>     C:\Windows\System\MSADODC.OCX
>         サイズ     : 129KB
>         タイム・スタンプ: 2004/03/09 0.00
>         Ver.       : 6.0.81.71

MSADODC.OCXの6.0.81.71はVB6.0のSP無しでのバージョンです。
何らかの原因で環境に不整合があるものと思われます。

それはさておき、
コピー先の環境で、
参照設定を可能な限り一旦外してプロジェクトを閉じ、
再度参照しなおすとコンパイルが通るようにならないでしょうか?

投稿時間:2004/08/29(Sun) 11:10
投稿者名:りょう
Eメール:
URL :
タイトル:
Re^4: ほかのPCから持ってきたVBのプロジェクトがエラーになります
ご返事有難うございます。

VB開発環境をWin98側からWinME側へ移動中です。
Win98マシーンがかなり老朽化して来ましたので。

その後いろいろやってみました。
なんとか開く事が出来る状態にはなっています。

現在、WindowsME側は、
ADOに関係していると思われる設定では、
(他にも必要なものが有るのかも知れませんが・・・)
コンポーネントは、

Microsoft ADO Data Control 6.0 (SP6) (OLEDB)

にチェックが、
参照設定は、

Microsoft ActiveX Data Object 2.1 Library
Microsoft ActiveX Object Recordset 2.5 Library
Microsoft ADO Ext 2.5 for DDL and Security

にチェックが入っています。

フォームに貼り付けている
ADOデータ・コントロール:[datPrimaryRS]
は、

ConnectionString:
Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Access97\Test1.mdb

RecordSource:
select F1,F2,F3,F4,F5 from T1 Order by F1

Private Sub datPrimaryRS_MoveComplete( _
                ByVal adReason As ADODB.EventReasonEnum, _
                ByVal pError As ADODB.Error, _
                adStatus As ADODB.EventStatusEnum, _
                ByVal pRecordset As ADODB.Recordset20 _
                )

Private Sub datPrimaryRS_WillChangeRecord( _
                    ByVal adReason As ADODB.EventReasonEnum, _
                    ByVal cRecords As Long, _
                    adStatus As ADODB.EventStatusEnum, _
                    ByVal pRecordset As ADODB.Recordset20 _
                    )

と言った内容です。

C:\Windows\System\MSADODC.OCX
サイズ     : 129KB
タイム・スタンプ: 2004/06/24 0.00
Ver.      : 6.1.97.82

は、

Windows98側の

C:\Windows\System\MSADODC.OCX
サイズ     : 129KB
タイム・スタンプ: 2004/03/09 0.00
Ver.      : 6.0.81.71

をコピーしました。(訳が分からないまま)

ConnectionStringを上記の通り生成し直して、

"ADODB.Recordset"を"ADODB.Recordset20"

と変更しました。

どうも良く分からないのですが、
MSADODC.OCX
のバージョン番号(6.0.81.71)と、
Microsoft ActiveX Data Object 2.1 Library
のバージョン番号(2.1)と、
ADODB.Recordset20
のバージョン番号(20)と、
Microsoft.Jet.OLEDB.3.51
のバージョン番号(3.51)
は、どのような関係に有るのでしょうか?

全部バラバラですが・・・?
いったいどのような関係の数字で作って行けば良いのでしょうか?

たまたま、色々やっている中で開くようにはなりましたが、
訳が分からず不安です。
これらの関係をご説明頂ければ有り難いのですが。

何故このような違いが出るのでしょうか?
よろしくお願いします。

投稿時間:2004/08/30(Mon) 17:29
投稿者名:だい
Eメール:
URL :
タイトル:
Re^5: ほかのPCから持ってきたVBのプロジェクトがエラーになります
あくまでも「あるべき論」ですが、
OCXやDLLファイルを個別にコピーするのは避けてください。
バージョンの不整合で開発環境がおかしくなったり、
セットアップファイルを正常に作成できなくなる等の問題を起こす可能性があります。
(ライセンス上問題ある場合もあります。)

> MSADODC.OCX
> のバージョン番号(6.0.81.71)と、

VB6.0SP無しのバージョン(MDAC2.0)

> Microsoft ActiveX Data Object 2.1 Library
> のバージョン番号(2.1)と、
> ADODB.Recordset20
> のバージョン番号(20)と、

ADO2.1を
ADO2.0(MDAC2.0)のインタフェイスで動かしている状態です。

> Microsoft.Jet.OLEDB.3.51
> のバージョン番号(3.51)

Jet(データベースエンジン)へ接続するOLEDBプロバイダのVer3.51
で、Access97形式のMDBファイルへアクセスできます(MDAC2.0に含まれる)。
この上位バージョンであるMicrosoft.Jet.OLEDB.4.0でもAccess97形式のファイルへアクセス可能です。

ということで、全体的にMDAC2.0相当で動いているものと思われますが、
WinMEであれば本来MDAC2.5相当の環境のはずなので既にかなり妖しい状況です。
MDACについては、
hhttp://e-words.jp/w/MDAC.html

------------------------------------------------------------------------------------------
可能であれば...の話です。
「動いてるならそのまま触らないほうが。。。」という考え方も一理ありますので、
下記を実行するか否かは貴方の選択にお任せしますが、
WinME環境を正しいVB6SP6環境に戻すか、
(何をやったか正確に覚えていないのであれば、HDDをフォーマットし、OSから入れなおしです。)
もしくは、新たに別PCに環境を作成して、
参照設定は、
Microsoft ActiveX Data Object 2.5 Library
Microsoft ADO Ext 2.5 for DDL and Security
OLEDBプロバイダは、Microsoft.Jet.OLEDB.4.0
ADOデータコントロールは、6.1.97.82
の環境でトライされるのが、後々のためには望ましいかとは思います。
------------------------------------------------------------------------------------------

投稿時間:2004/08/31(Tue) 09:27
投稿者名:りょう
Eメール:
URL :
タイトル:
Re^6: ほかのPCから持ってきたVBのプロジェクトがエラーになります
おはようございます。

だいさん、有難う御座います。

おっしゃるとおりですね。
正常なセットアップ状況では無いようなのに、
無理やり動かそうとしているところが根本的に間違っていると思います。
やり直しをしようと思っています。

有難うございました。

投稿時間:2004/09/06(Mon) 22:16
投稿者名:りょう
Eメール:
URL :
タイトル:
終了です。
有難うございました。