Вызов модуля и класса в форме - PullRequest
0 голосов
/ 31 октября 2019

У меня есть класс Employee, где я вызываю модуль подключения к базе данных, чтобы выполнить запрос.

Я получаю сообщение «Ошибка компиляции: ожидаемая функция или переменная», которую я не понимаю, потому что у меня естьempObj установлено в верхней части формы.

Я хотел бы вернуть значение из метода Employee.getEmployee. Может кто-нибудь показать мне, как вызвать класс Employee из моей формы? Должен ли я сначала импортировать класс? Я не верю, что VB6 поддерживает ключевое слово Imports. 1007 *

Это моя форма:

Option Explicit

Private empObj As New Employee

Private Sub Form_Load()
  'For testing only
  MsgBox (empObj.getEmployee)
End Sub

Это мой класс:

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

1 Ответ

3 голосов
/ 31 октября 2019

Основная оболочка того, что вы хотите сделать, выглядит следующим образом:

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

Почти каждая строка отличается от того, что вы написали, поэтому внимательно посмотрите на код.

РЕДАКТИРОВАТЬ:

На основе комментария, вот как изменить код для возврата объекта подключения:

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. Функции против подпрограмм- первое возвращает данные, второе - нет. Убедитесь, что вы объявляете тип возвращаемого значения функции.
  4. return - этот оператор устарел и не выполняет то, что вы хотите. Вместо этого присвойте значение имени функции.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...