在表单中调用模块和 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

完成后不要忘记关闭连接。总结变化:

  1. empObj - 您应该单独声明和实例化您的对象。
  2. MsgBox - 不需要 ()。
  3. Functions vs Subs - 第一个 returns 数据,第二个没有。确保声明函数的 return 类型。
  4. return - 此语句已过时,不会执行您想要的操作。相反,为函数名称分配一个值。