我有一个测试项目,我正在使用它来熟悉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(”你好“)这样的东西”工作正常。然而,在抛出错误之前,它似乎甚至没有到达调用GetMenuItems函数的行。 这是我第一次使用VB,我有点难过。
编辑 - 我已经看过我正在使用的UDL文件。经过测试,并且可以自行连接。
答案 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