0

VB6 に慣れるために使用しているテスト プロジェクトがあります。リストボックス、情報を取得するためのボタン、および情報をクリアするためのボタンのみ:

VB6フォーム

コード:

Option Explicit

Private Sub btnGet_Click()
    lstResults.DataSource = GetMenuItems
End Sub

Private Sub btnClear_Click()
    lstResults.Clear
End Sub

Public Function GetMenuItems() As ADODB.Recordset
    Dim rs As ADODB.Recordset

    Dim conn As New ADODB.Connection
    conn.ConnectionString = "File Name=C:\connString.udl"

    Dim cmd As New ADODB.Command
    Set cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "dbo.GetMenuItems"
    Set rs = cmd.Execute()
    GetMenuItems = rs
End Function

[アイテムを取得] ボタン (btnGet) をクリックすると、次のエラーが表示されます。

コンパイル エラー: メソッドまたはデータ メンバーが見つかりません

最初は、イベント/ボタンに関係があるのではないかと思いました。それらの間に何らかのバインディングが存在しませんでした。しかし、「MsgBox("Hello")」のようなものを入れるだけでうまくいきます。それでも、エラーをスローする前に GetMenuItems 関数が呼び出される行に到達していないようです。これは VB との私の最初の旋風であり、少し困惑しています。

編集 - 私も使用していたUDLファイルを見てきました。それをテストし、それ自体で問題なく接続できました。

4

2 に答える 2

2

ではSub btnGet_Click、使用

Set lstResults.DataSource = GetMenuItems

使用せずにオブジェクト参照を割り当てることSetは、ほとんど正しいことではありません。価値があるのはSet、左側のデフォルト プロパティへの参照を省略することです。これはオブジェクトのようなものが存在する前に、VB3 プログラマーの助けとして VB6 (OK、VB4、クラスが導入されたとき) の一部でした。どのような種類のオブジェクトlstResults.DataSourceが返されても、デフォルトのプロパティがない可能性が高く、「メソッドまたはデータ メンバーが見つかりません」というエラーが発生します。

于 2012-12-10T22:52:50.080 に答える
1
  • パブリック関数GetMenuItems()を呼び出すプライベートサブbtnGet_Click()があり、問題が発生する可能性があります。

  • また、接続文字列としてudlを使用できるかどうかもわかりません。代わりに、UDLを開き(ファイル拡張子を一時的に.txtに変更する必要がある場合があります)、接続文字列を取り出し、ファイル名の代わりにそれを使用します。

  • また、ストアドプロシージャが存在することを確認してくださいdbo.GetMenuItems

于 2012-12-10T22:20:59.420 に答える