(Ошибка 91: переменная объекта или переменная блока не задана) Ошибка объявления и доступа к глобальной переменной в Visual Basic 6.0 - PullRequest
0 голосов
/ 12 февраля 2012

Я разрабатываю форму авторизации.Я сделал глобальное объявление в модуле:

   Global db  As ADODB.Connection
   Global rs  As ADODB.Recordset
   Global tot As Integer

   Public Sub access_connector()
   Set db = New ADODB.Connection
    db.Provider = "Microsoft.jet.oledb.4.0"
    db.CursorLocation = adUseClient
    db.Open App.Path & "\data.mdb"
  End Sub

И в окне кода формы:

   Private Sub Command1_Click()
   db.Open
   Set rs = db.Execute("SELECT * FROM Login Where UserName='" _
       & txtusername.Text & "'")
   If txtpassword = "" And txtusername = "" Then
      MsgBox "Login not possible"
   Else
   If Not rs.EOF() Then
      If (rs(1) = txtpassword.Text) Then
          MsgBox "Login Successful"
      Else
          MsgBox "Login not success"
      End If
   Else
      MsgBox "EOF Reached"
  End  If
 End If
 db.Close
 End Sub

Но когда я нажимаю кнопку входа, возникает следующая ошибка: Ошибка 91: переменная объекта или переменная блока не установлена ​​

На самом деле, я думаю (возможно, это не так), что она не может распознавать объекты "db" и "rs", как при отладке "db.open "выделено.

Может кто-нибудь решить эту проблему.Я был бы очень благодарен.Заранее спасибо.

1 Ответ

2 голосов
/ 12 февраля 2012

Я изменил имя вашей переменной "db" на "conn", чтобы подчеркнуть тот факт, что это соединение, а не база данных.Затем вы должны открыть соединение, когда вам это нужно, в форме.Вы должны указать базу данных в форме, так как вы не объявили переменную базы данных ранее.Возможно, вам следует переосмыслить глобальные переменные ADODB и просто включить их в код формы, но я не уверен в этом.

Global conn As ADODB.Connection
Global tot As Integer

Public Sub access_connector()
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.jet.oledb.4.0"
conn.CursorLocation = adUseClient
End Sub

Private Sub Command1_Click()
Dim rs As ADODB.Recordset

access_connector
conn.Open App.Path & "\data.mdb"
Set rs = conn.Execute("SELECT * FROM Login Where UserName='" & txtusername.Text & "'")
If txtpassword = "" And txtusername = "" Then
    MsgBox "Login not possible"
Else
    If Not rs.EOF() Then
        If (rs(1) = txtpassword.Text) Then
            MsgBox "Login Successful"
        Else
            MsgBox "Login not success"
        End If
    Else
        MsgBox "EOF Reached"
    End If
End If
conn.Close
End Sub
...