一、数据库连接:
Dim objRs As ADODB.Recordset Private Sub Form_Load() Dim objCn As New Connection '建立数据库连接(本地连接) strcn = "Provider=SQLOLEDB;Data Source=.;Initial CataLog=Charge_zlj;UID=sa;PWD=123456" objCn.ConnectionString = strcn objCn.Open '创建RecordSet对象,获得系统用户信息 Set objRs = New Recordset Set objRs.ActiveConnection = objCn objRs.CursorLocation = adUseClient '客户端临时表,可以提供重新排序和使用索引查寻记录等特有功能 objRs.CursorType = adOpenDynamic '开放式记录锁定,在执行Update方法时锁定记录 objRs.LockType = adLockOptimistic strsql = "select * from 学生注册 " objRs.Open strsql End sub
二、限制用户请求验证次数:
Private Sub cmdOK_Click() Static intLogTimes As Integer '用于保存用户请求验证次数 intLogTimes = intLogTimes + 1 '计算登录次数 If intLogTimes > MaxLogTimes Then MsgBox "您已经超过允许用户验证次数!" & vbCr & "应用程序将结束!", vbCritical, "登录验证" End Else '进一步验证登录信息合法性 '检查是否存在指定用户 objRs.MoveFirst objRs.Find "用户名=’" & txtName.Text & "'" If objRs.EOF Then MsgBox "用户名错误!", vbOKOnly + vbCritical, "系统登录" txtName.SetFocus txtName.SelStart = 0 txtName.SelLength = Len(txtName.Text) Exit Sub Else '检查密码是否正确 If objRs!密码 <> txtPW Then MsgBox "密码输入错误!", vbOKOnly + vbCritical, "系统登录" txtPW.SetFocus txtPW.SelStart = 0 txtPW.SelLength = Len(txtPW.Text) Exit Sub Else '在系统主窗体完成后完成以下的语句 ThisUserName = txtName ThisPassword = txtPW Unload Me '卸载登录窗体 frmMain.Show End If End If End If End Sub
三、查找是否存在重复记录
'查找是否存在重复记录 Private Function isRepeatCardID() As Boolean '检查卡号是否已经被注册过 Dim objCopy As New Recordset Set objCopy = objRs.Clone '创建objRs的副本 If objCopy.RecordCount > 0 Then objCopy.MoveFirst objCopy.Find "卡号='" & Trim(txtCardID.Text) & "'" If Not objCopy.EOF Then '找到 isRepeatCardID = True End If Else isRepeatCardID = False End If End Function
1、
2、
正确:objRs.Find "卡号='1001'"
错误:objRs.Find "卡号=' 1001 '" 注意:1001前/后空格的存在
在数据库中Find查找时,''一对单引号之内的内容要和表中的信息完全匹配,才会被找到的
3、
EOF指:最后一条记录的下一条记录
objRs.EOF如果查找到重复记录,返回True 指针定位在重复记录的地方
找不到重复记录 ,返回False指针定位在EOF(最后一条记录的下一条记录)的位置
'有两种表达方式:默认是:False(找不到重复记录) If Not objCopy.EOF Then '找到重复记录 isRepeatCardID = True End If '或者 If objCopy.EOF Then '没找到 isRepeatCardID = false Else isRepeatCardID = True End If
四、添加错误处理
'过程,段首 On Error GoTo DealError '过程,段尾 DealError: Msg="程序执行错误,错误信息如下:" & vbCrLF & Err.Description ShowError msg End Sub
五、判断在所有子窗体关闭之后,才关闭系统主窗体
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) If MsgBox("您选择了关闭机房收费系统,是否继续?", vbOKOnly + vbInformation, "机房收费系统") = vbYes Then '判断在所有子窗体关闭之后,才关闭系统主窗体 If Not Me.ActiveForm Is Nothing Then MsgBox "请先关闭打开的子窗体!", vbCritical, "机房收费系统" Cancel = 1 End If Else Cancel = 1 End If End Sub