加贺桑开发失败了:vb 编写的登陆框(vb+ado+access)
来源:百度文库 编辑:偶看新闻 时间:2024/04/30 02:47:28
首先先把我的设计思想说一下: 我用的是vb+ ADO+access设计的这个管理系统,之前老师发了一个,我看不懂,因为那些代码就在外面,整个程序,包括界面都是代码实现的,我的实力还不够,看不懂,然后就自己重新写了一个新得。网上很多都是vb+sqlserver 但是我认为 我不用那么高级的 access就足够了。 账号和密码存在dbuser表里,我设置了 zipcode 作为找回密码用。 然后通过数据调用就可以了。
我认为在整个系统的设计中,当然也就包括登陆框,我注意的是 定义变量的作用范围、利用vb对access数据检索时是否与ado的关键字冲突,倒是报错,再还有一个就是 引号的使用,这个引号是令我非常头疼的,曾经有一下午,我看引号就看了一下午,当解决了那个问题以后,异常兴奋。我认为你在编程的道路上,肯定也会有我这个兴奋的过程得。
关于登陆,我还使用了一个常量,限制尝试登陆的次数,没有设计到定时器,我看了一篇文章使用的是定时器,但是我没有使用,各位如果愿意的话,我非常荣幸的请大家把有关计数器在登陆框上的应用跟帖发上来,先说声谢谢。
在登陆框,我设置了一个 Privilege选项,用来区别两个账号的权限,在进入程序以后,进行不同的操作。
好了,先把基本图片发上来,让大家看一下 表的数据项:
之后是vb的登陆界面:
实现ado的功能,先在“ 工程---引用 ”指定 “Microsoft ActiveX Data Objects 2.0 Library”,我用的是2.8的,然后就是代码了~~
直接发上来全部的了~~
Option Explicit
Dim cnn As ADODB.Connection
Dim i As Integer
Public Privilege As String
Private Sub Form_Load()
'连接Access数据库
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
Dim cnnFile As String
cnnFile = "Data Source=" & App.Path & "\MangeDB.mdb;Persist Security Info=False;Jet OLEDB:Database Password=gougou"
cnn.Open cnnFile
'检测数据库是否链接成功
If cnn.State = adStateOpen Then
MsgBox "成功", 64, "数据库连接"
Else
MsgBox "失败,请检查数据库文件", 48, "数据库连接"
End If
i = 3
Label1.Caption = "您还有 " & i & " 次机会"
End Sub
Private Sub cmdok_Click()
'检测密码
Dim Textusername As String
Dim Textpassword As String
Dim rs As ADODB.Recordset
Dim strsql As String
Dim temp As String
Textusername = Vbusername.Text
Textpassword = Vbpassword.Text
If i = 0 Then End '限制登陆次数
If Me.Vbusername.Text = "" Or Me.Vbpassword.Text = "" Then
i = i - 1
MsgBox "用户名和密码不能为空", 48, "提示"
Me.Vbusername.SetFocus
'账号或密码为空提示检查
Else
Set rs = New ADODB.Recordset
strsql = "select * from Dbuser where Dbusername='" & Textusername & " ' and Dbpassword='" & Textpassword & "'"
rs.Open strsql, cnn, adOpenStatic, adLockReadOnly 'Open table "DBser"
If rs.EOF Then
MsgBox "用户名或密码错误", vbCritical, "提示"
i = i - 1
Label1.Caption = "您还有 " & i & " 次机会"
Me.Vbusername = ""
Me.Vbpassword = ""
Me.Vbusername.SetFocus
Else
'从数据库取得privilege值 判断权限 提示用户
Privilege = rs.Fields("Privilege").Value
If Privilege = "admin" Then
temp = "管理员账号"
Else: temp = "普通用户账号"
End If
MsgBox "你是" & temp & " ", 64, "权限提示"
rs.Close
Set rs = Nothing
cnn.Close
Unload Me
Index.Show
End If
'从数据库检查用户名和密码的正确性
End If
End Sub
Private Sub forgetkey_Click()
Dim zip As String
Dim Textusername As String
Dim pass As String
Dim strsql As String
Textusername = Me.Vbusername.Text
zip = Trim(InputBox("请输入此账号对应的邮编", "找回密码"))
If zip = "" Or Textusername = "" Then
MsgBox "账户或邮编号码不能为空", , "错误提示"
Else
Dim rc As ADODB.Recordset
Set rc = New ADODB.Recordset
strsql = " select * from Dbuser where Dbusername='" & Textusername & " ' and zipcode ='" & zip & "' "
rc.Open strsql, cnn, adOpenStatic, adLockReadOnly
If rc.EOF Then
MsgBox "您的输入有误", vbCritical, "提示"
i = i - 1
Label1.Caption = "您还有 " & i & " 次机会"
If i = 0 Then End
Else
pass = rc.Fields("Dbpassword").Value
MsgBox "你的密码是 " & pass & " 请妥善保管!", vbInformation, "密码提示"
Set rc = Nothing
rc.Close
pass = ""
End If
End If
End Sub
Private Sub cmdCancel_Click()
End
End Sub '放弃键退出系统
第二,我认为 csdnhttp://www.csdn.net/ 是个太好的网站了,在我写这个小程序的几天里,很多疑问都是在这个论坛上得到的解答。