我在做一个VB程序的登录窗口时,遇到这样的问题——
一个简单的资料管理系统,Access数据库crmdb.mdb,含users表,包含username和password两例。
建立了一个模块(代码如下)
Option Explicit
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public Function ConnectToServer() As Boolean
On Error GoTo connecterr
'连接到ACCESS
cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\crmdb.mdb"
cn.ConnectionTimeout = 30
cn.Open '打开连接
ConnectToServer = True '打开连接则让函数返回真值
Exit Function '退出函数调用
'错误处理
connecterr:
ConnectToServer = False
MsgBox "错误代码:" & Err.Number & vbCrLf & _
"错误描述:" & Err.Description, vbCritical + vbOKOnly, "连接数据库过程中发生错误!"
End Function
Sub main()
'检验数据库连接是否正确,正确显示登录窗口
If ConnectToServer = False Then End '出现错误,结束程序的执行
Else '连接数据库成功才调用登录窗口
frmLogin.Show
End If
End Sub
登录窗口cmdOK按钮的Click事件代码如下:
Private Sub cmdOK_Click()
Dim CurrentUser As String
Dim sqlStr As String
sqlStr = "Select * from users where username='" & txtUserName.Text & "' and password='" & txtPassword.Text & "'"
rs.Open sqlStr, cn, adOpenKeyset, adLockPessimistic
If rs.BOF = True And rs.EOF = True Then
'登录不成功
MsgBox "用户名或密码错,程序将终止!", vbInformation + vbOKOnly, "系统提示"
End
Else
'登录成功
MsgBox txtUserName.Text & " 欢迎您!", vbInformation + vbOKOnly, "系统提示"
CurrentUser = txtUserName.Text
Unload Me
frmMain.Show
End If
End Sub
运行时,出现“实时错误3709:连接无法用于执行此操作,在此上下文中它可能已被关闭或无效”的提示,调试时发现cmdOK_Click事件的“rs.Open sqlStr, cn, adOpenKeyset, adLockPessimistic
”语句显示有问题。
请教高手,问题出在哪里?是不是DSN设置的问题,该怎样来配置?谢谢!
[此贴子已经被作者于2007-6-24 15:14:42编辑过]