在表单中调用模块和 Class
Calling a Module and a Class within a Form
我有一个员工 class,我在其中调用我的数据库连接模块来进行查询。
我得到 "Compile Error: Expected function or variable",我不明白,因为我在表单顶部设置了 empObj
。
我想 return 来自 Employee.getEmployee 方法的值。有人可以告诉我如何从我的表单中调用员工 class 吗?我必须先导入 class 吗?我不相信 VB6 支持 Imports
关键字。
这是我的表格:
Option Explicit
Private empObj As New Employee
Private Sub Form_Load()
'For testing only
MsgBox (empObj.getEmployee)
End Sub
这是我的 class:
Public Sub getEmployee()
'ConnectSQL is a database connection
return ConnectSQL
End Sub
这是模块:
Public Function ConnectSQL()
Set SQLMyconn = New ADODB.Connection
Set SQLRecset = New ADODB.Recordset
SQLMyconn.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
End Function
你想做的基本shell是这样的:
Option Explicit
Private empObj As Employee
Private Sub Form_Load()
Set empObj = New Employee
MsgBox empObj.getEmployee
End Sub
Public Function getEmployee() As String
getEmployee = ConnectSQL
End Function
Public Function ConnectSQL() As String
Set SQLMyconn = New ADODB.Connection
Set SQLRecset = New ADODB.Recordset
SQLMyconn.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
ConnectSQL = "data from your DB lookup"
End Function
几乎每一行都与您发布的内容不同,因此请仔细查看代码。
编辑:
根据评论,以下是将代码修改为 return 连接对象的方法:
Option Explicit
Private empObj As Employee
Private Sub Form_Load()
Set empObj = New Employee
MsgBox empObj.getEmployee
Dim MyConnection As ADODB.Connection
Set MyConnection = ConnectSQL()
'you can grab and use the connection in your form, too.
End Sub
Public Function getEmployee() As String
Dim MyConnection As ADODB.Connection
Set MyConnection = ConnectSQL()
'use the connection to grab data
getEmployee = "data from your DB lookup"
End Function
Public Function ConnectSQL() As ADODB.Connection
Set ConnectSQL = New ADODB.Connection
ConnectSQL.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
End Function
完成后不要忘记关闭连接。总结变化:
- empObj - 您应该单独声明和实例化您的对象。
- MsgBox - 不需要 ()。
- Functions vs Subs - 第一个 returns 数据,第二个没有。确保声明函数的 return 类型。
- return - 此语句已过时,不会执行您想要的操作。相反,为函数名称分配一个值。
我有一个员工 class,我在其中调用我的数据库连接模块来进行查询。
我得到 "Compile Error: Expected function or variable",我不明白,因为我在表单顶部设置了 empObj
。
我想 return 来自 Employee.getEmployee 方法的值。有人可以告诉我如何从我的表单中调用员工 class 吗?我必须先导入 class 吗?我不相信 VB6 支持 Imports
关键字。
这是我的表格:
Option Explicit
Private empObj As New Employee
Private Sub Form_Load()
'For testing only
MsgBox (empObj.getEmployee)
End Sub
这是我的 class:
Public Sub getEmployee()
'ConnectSQL is a database connection
return ConnectSQL
End Sub
这是模块:
Public Function ConnectSQL()
Set SQLMyconn = New ADODB.Connection
Set SQLRecset = New ADODB.Recordset
SQLMyconn.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
End Function
你想做的基本shell是这样的:
Option Explicit
Private empObj As Employee
Private Sub Form_Load()
Set empObj = New Employee
MsgBox empObj.getEmployee
End Sub
Public Function getEmployee() As String
getEmployee = ConnectSQL
End Function
Public Function ConnectSQL() As String
Set SQLMyconn = New ADODB.Connection
Set SQLRecset = New ADODB.Recordset
SQLMyconn.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
ConnectSQL = "data from your DB lookup"
End Function
几乎每一行都与您发布的内容不同,因此请仔细查看代码。
编辑:
根据评论,以下是将代码修改为 return 连接对象的方法:
Option Explicit
Private empObj As Employee
Private Sub Form_Load()
Set empObj = New Employee
MsgBox empObj.getEmployee
Dim MyConnection As ADODB.Connection
Set MyConnection = ConnectSQL()
'you can grab and use the connection in your form, too.
End Sub
Public Function getEmployee() As String
Dim MyConnection As ADODB.Connection
Set MyConnection = ConnectSQL()
'use the connection to grab data
getEmployee = "data from your DB lookup"
End Function
Public Function ConnectSQL() As ADODB.Connection
Set ConnectSQL = New ADODB.Connection
ConnectSQL.Open "Driver={MySQL ODBC Client Interface};ServerName=localhost;dbq=@testdb"
End Function
完成后不要忘记关闭连接。总结变化:
- empObj - 您应该单独声明和实例化您的对象。
- MsgBox - 不需要 ()。
- Functions vs Subs - 第一个 returns 数据,第二个没有。确保声明函数的 return 类型。
- return - 此语句已过时,不会执行您想要的操作。相反,为函数名称分配一个值。