' 如果RecordSet的状态不是关闭状态,则关闭Recordset If Rs.State <> adStateClosed Then Rs.Close
' Recordser打开表People Rs.Open "Select * from People", Conn, adOpenKeyset, adLockOptimistic
' 报告出 一共多少笔数据,测试是否存在数据 ' MsgBox Rs.RecordCount
' 绑定进DataGrid Set DataGrid1.DataSource = Rs
End Sub
标准代码,在模块中建立一个连接模块 dim cn as new adodb.connection set cn = new adodb.connection cn.connectionstring="uid=admin;pwd=******;driver={microsoft access driver(*.mdb)};dbq="&app.path&"\sj.mdb" cn.open
窗体上添加两个标签、文本框、按钮。窗体代码: Option Explicit'定义允许用户验证登录信息的最大次数 Const MaxLogTimes As Integer = 3Private Sub cmdCancel_Click() '请求用户确认是否真的退出系统登录 If MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf _ & "是否真的退出?", vbYesNo, "登录验证") = vbYes Then Unload Me '卸载登录窗体 End If End SubPrivate Sub cmdOk_Click() Dim intChecked As Integer Dim strName As String, MdbPath As String, strPassword As String
'静态常量intLogTimes用于保存用户请求验证的次数 Static intLogTimes As Integer intLogTimes = intLogTimes + 1 '保存登录次数 If intLogTimes > MaxLogTimes Then '超过允许的登录次数,显示提示信息 MsgBox "你已经超过允许的登录验证次数!" & vbCr _ & "应用程序将结束!", vbCritical, "登录验证" End '结束应用程序 Else '进一步验证登录信息的合法性 strName = Trim(txtLog(0).Text) '获得用户名 strPassword = Trim(txtLog(1).Text) '获得口令
'检验用户名和口令的合法性,并根据检验返回值执行相应的操作 MdbPath = App.Path & "\mydb.mdb" Select Case Check_PassWord(MdbPath, strName, strPassword) Case 0 '用户不是系统用户 MsgBox "用户不是系统用户,请检查用户名输入是否正确!", _ vbCritical, "登录验证" txtLog(0).SetFocus txtLog(0).SelStart = 0 txtLog(0).SelLength = Len(txtLog(0)) Case 1 '口令错误 MsgBox "口令错误,请重新输入!", vbCritical, "登录验证" txtLog(1) = "" txtLog(1).SetFocus Case 2 Unload Me '口令正确,卸载登录窗体 MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
'通常在此放置显示系统主窗体的语句,例如 'frmMain.Show Case Else '登录验证未正常完成 MsgBox "登录验证未正常完成!请重新运行登录程序," & vbCrLf _ & "如果仍不能登录,请报告系统管理员!", _ vbCritical, "登录验证" End Select End If End SubPrivate Function Check_PassWord(ByVal MdbPath As String, ByVal UserName As String, _ ByVal Password As String) As Byte On Error GoTo gpError '查询数据库,获得UserName的登录口令 Dim objCn As Connection Dim objRs As Recordset Dim strCn As String, strSQL As String Set objRs = New Recordset Set objCn = New Connection '建立数据库连接 With objCn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & MdbPath & ";" & _ "Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;" & _ "Jet OLEDB:Database Password=" & Password & ";" .Open End With
'执行查询命令,获得用户登录口令 strSQL = "SELECT 口令 FROM 测试表 WHERE 用户名='" _ & UserName & "'" Set objRs.ActiveConnection = objCn objRs.Open (strSQL)
'判断有无查询结果 If objRs.EOF Then Check_PassWord = 0 '没有查询结果,表示该用户为非法用户 Else '检查口令是否正确 If Password <> Trim(objRs.Fields("口令").Value) Then Check_PassWord = 1 '口令不正确 Else Check_PassWord = 2 '口令正确 End If End If
'关闭数据库连接,释放对象 objCn.Close Set objRs = Nothing Set objCn = Nothing Exit Function gpError: Check_PassWord = 255 End Function
呵呵,不好意思,忘了一点:请先'引用:Microsoft ActiveX Data Objects 2.7 Library Private Function Check_PassWord(...) '查询数据库,获得UserName的登录口令 Dim objCn As Connection 改成 ---〉Dim objCn As ADODB.Connection Dim objRs As Recordset 改成---〉Dim objRs As ADODB.Recordset
我找不到 Microsoft ActiveX Data Objects 2.7 Library 只有2.5的,哪里可以下到2.7或以上版本的!
Option ExplicitPrivate Rs As New ADODB.Recordset
Private Conn As New ADODB.ConnectionPrivate Sub Form_Load()
Dim strConn As String
' 连接数据库的字符串
' 连接带密码的数据库,直接在连接符后面加上Jet OLEDB:DataBase Password='您的密码'
' 连接Access97数据库需要使用Jet.OLEDB.3.5,Access2K和以上数据库使用Jet.OLEDB.4.0
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
' 使用客户端数据游标
Conn.CursorLocation = adUseClient
' 打开Access的连接
Conn.Open strConn
' 如果RecordSet的状态不是关闭状态,则关闭Recordset
If Rs.State <> adStateClosed Then Rs.Close
' Recordser打开表People
Rs.Open "Select * from People", Conn, adOpenKeyset, adLockOptimistic
' 报告出 一共多少笔数据,测试是否存在数据
' MsgBox Rs.RecordCount
' 绑定进DataGrid
Set DataGrid1.DataSource = Rs
End Sub
dim cn as new adodb.connection
set cn = new adodb.connection
cn.connectionstring="uid=admin;pwd=******;driver={microsoft access driver(*.mdb)};dbq="&app.path&"\sj.mdb"
cn.open
Option Explicit'定义允许用户验证登录信息的最大次数
Const MaxLogTimes As Integer = 3Private Sub cmdCancel_Click()
'请求用户确认是否真的退出系统登录
If MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf _
& "是否真的退出?", vbYesNo, "登录验证") = vbYes Then
Unload Me '卸载登录窗体
End If
End SubPrivate Sub cmdOk_Click()
Dim intChecked As Integer
Dim strName As String, MdbPath As String, strPassword As String
'静态常量intLogTimes用于保存用户请求验证的次数
Static intLogTimes As Integer
intLogTimes = intLogTimes + 1 '保存登录次数
If intLogTimes > MaxLogTimes Then
'超过允许的登录次数,显示提示信息
MsgBox "你已经超过允许的登录验证次数!" & vbCr _
& "应用程序将结束!", vbCritical, "登录验证"
End '结束应用程序
Else
'进一步验证登录信息的合法性
strName = Trim(txtLog(0).Text) '获得用户名
strPassword = Trim(txtLog(1).Text) '获得口令
'检验用户名和口令的合法性,并根据检验返回值执行相应的操作
MdbPath = App.Path & "\mydb.mdb"
Select Case Check_PassWord(MdbPath, strName, strPassword)
Case 0
'用户不是系统用户
MsgBox "用户不是系统用户,请检查用户名输入是否正确!", _
vbCritical, "登录验证"
txtLog(0).SetFocus
txtLog(0).SelStart = 0
txtLog(0).SelLength = Len(txtLog(0))
Case 1
'口令错误
MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"
txtLog(1) = ""
txtLog(1).SetFocus
Case 2
Unload Me '口令正确,卸载登录窗体
MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
'通常在此放置显示系统主窗体的语句,例如
'frmMain.Show
Case Else
'登录验证未正常完成
MsgBox "登录验证未正常完成!请重新运行登录程序," & vbCrLf _
& "如果仍不能登录,请报告系统管理员!", _
vbCritical, "登录验证"
End Select
End If
End SubPrivate Function Check_PassWord(ByVal MdbPath As String, ByVal UserName As String, _
ByVal Password As String) As Byte
On Error GoTo gpError
'查询数据库,获得UserName的登录口令
Dim objCn As Connection
Dim objRs As Recordset
Dim strCn As String, strSQL As String
Set objRs = New Recordset
Set objCn = New Connection '建立数据库连接
With objCn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & MdbPath & ";" & _
"Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;" & _
"Jet OLEDB:Database Password=" & Password & ";"
.Open
End With
'执行查询命令,获得用户登录口令
strSQL = "SELECT 口令 FROM 测试表 WHERE 用户名='" _
& UserName & "'"
Set objRs.ActiveConnection = objCn
objRs.Open (strSQL)
'判断有无查询结果
If objRs.EOF Then
Check_PassWord = 0 '没有查询结果,表示该用户为非法用户
Else
'检查口令是否正确
If Password <> Trim(objRs.Fields("口令").Value) Then
Check_PassWord = 1 '口令不正确
Else
Check_PassWord = 2 '口令正确
End If
End If
'关闭数据库连接,释放对象
objCn.Close
Set objRs = Nothing
Set objCn = Nothing
Exit Function
gpError:
Check_PassWord = 255
End Function
Private Function Check_PassWord(...)
'查询数据库,获得UserName的登录口令
Dim objCn As Connection 改成 ---〉Dim objCn As ADODB.Connection
Dim objRs As Recordset 改成---〉Dim objRs As ADODB.Recordset