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引用左侧的默认属性;这是 VB6(好吧,VB4,当引入类时)的一部分,作为对 VB3 程序员的帮助,在对象之类的东西出现之前。无论哪种对象lstResults.DataSource返回都可能没有默认属性,从而导致“找不到方法或数据成员”错误。

于 2012-12-10T22:52:50.080 回答
1
  • 您有一个私有子 btnGet_Click() 调用公共函数 GetMenuItems(),这可能会导致问题。

  • 另外我不确定您是否可以使用 udl 作为连接字符串。相反,打开 UDL(您可能需要暂时将文件扩展名更改为 .txt),取出连接字符串,并使用它代替文件名。

  • 另外,检查存储过程是否存在 dbo.GetMenuItems

于 2012-12-10T22:20:59.420 回答