尝试执行数据库代码时“找不到方法或数据成员”

时间:2012-12-10 22:06:32

标签: vb6 ado

我有一个测试项目,我正在使用它来熟悉VB6。只需一个列表框,一个获取信息的按钮,以及一个清除信息的按钮:

VB6 Form

代码:

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(”你好“)这样的东西”工作正常。然而,在抛出错误之前,它似乎甚至没有到达调用GetMenuItems函数的行。 这是我第一次使用VB,我有点难过。

编辑 - 我已经看过我正在使用的UDL文件。经过测试,并且可以自行连接。

2 个答案:

答案 0 :(得分:2)

Sub btnGet_Click中,使用

Set lstResults.DataSource = GetMenuItems

在不使用Set的情况下分配对象引用几乎不是正确的做法。为了它的价值,省略Set引用左侧的默认属性;这是VB6的一部分(好的,VB4,当引入类时)作为对VB3程序员的帮助,之前有像对象这样的东西。无论哪种对象lstResults.DataSource返回,都可能没有默认属性,导致“找不到方法或数据成员”错误。

答案 1 :(得分:1)

  • 你有一个私人子btnGet_Click()调用公共函数GetMenuItems(),这可能会导致问题。

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

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