机房收费-----实时错误3265&登录窗体
程序员文章站
2022-07-13 11:02:43
...
终于弄完一个窗体了,之前我通过查看别人的博客,然后一直在想他们为什么都要用3个mrc,为什么不能用一个?经过多次尝试后发现用3个mrc的用处了。为什么会发现3个mrc的用处呢,我还得感谢这个实时错误。
实时错误3265
问题:首先我要将这些数据存储到worklog工作表中,明明mrc.fields(7)的位置就是要存放我的电脑名称,但是他却报错说没有找到项目。
'查询指定用户名的记录
TxtSql = "select * from User_info where userID='" & TxtUserName & "'"
'执行查询语句
Set mrc = ExecuteSQL(TxtSql, MsgText)
mrc.Fields(1) = Trim(TxtUserName.Text)
mrc.Fields(2) = Trim(mrc.Fields(2)) '判断等级的
mrc.Fields(3) = Trim(Date) 'date为当前系统的日期,time为当前系统的时间
mrc.Fields(4) = Trim(Time)
mrc.Fields(7) = Trim(VBA.Environ("computername"))
mrc.Fields(8) = Trim(True)
mrc.Update
原因:我的mrc是在User_info这个表中进行查询并存放记录的,所以如果让他更新的话,他就只能将数据存放到User_info这个表中了,没有办法存放到另一个表worklog中。
解决方法:我们需要创建一个能够将worklog进行更新的mrc。
解决后:
'创建一个能够返回worklog的记录集
TxtSql2 = "select * from worklog_info"
'执行查询语句
Set mrcWorklog = ExecuteSQL(TxtSql2, MsgText)
mrcWorklog.AddNew
mrcWorklog.Fields(1) = Trim(TxtUserName.Text)
mrcWorklog.Fields(2) = Trim(mrc.Fields(2)) '判断等级的
mrcWorklog.Fields(3) = Trim(Date) 'date为当前系统的日期,time为当前系统的时间
mrcWorklog.Fields(4) = Trim(Time)
mrcWorklog.Fields(7) = Trim(VBA.Environ("computername"))
mrcWorklog.Fields(8) = Trim(True)
mrcWorklog.Update
mrcWorklog.Close
为什么要用三个mrc呢?因为在一开始的时候我们需要一个用来存放我们在user_info 查询的账号密码。一个用来更新worklog中的信息,一个用来更新onwork中的信息。总共需要三个。
登陆窗体
流程图
Private Sub CmdOk_Click()
'用来存放SQL语句
Dim TxtSql As String
Dim TxtSql2 As String
Dim TxtSql3 As String
'用来存放记录集对象
Dim mrc As ADODB.Recordset
Dim mrcWorklog As ADODB.Recordset
Dim mrcOnWork As ADODB.Recordset
'用来存放返回信息
Dim MsgText As String
Dim micount As Integer '用来记录错误的次数
'判断用户名是否为空
If Trim(TxtUserName = "") Then
MsgBox "没有这个用户,请重新输入用户名", vbOKCancel + vbExclamation, "警告"
TxtUserName.SetFocus
TxtPassword = ""
micount = micount + 1
Exit Sub
Else
'判断密码时候为空
If Trim(TxtPassword = "") Then
MsgBox "密码不能为空,请重新输入密码!", vbOKCancel + vbExclamation, "警告"
TxtPassword.SetFocus
micount = micount + 1
Exit Sub
End If
'查询指定用户名的记录
TxtSql = "select * from User_info where userID='" & TxtUserName & "'"
'执行查询语句
Set mrc = ExecuteSQL(TxtSql, MsgText)
If mrc.EOF = True And mrc.BOF = True Then
MsgBox "没有该用户,请重新输入!", vbOKCancel + vbExclamation, "警告"
TxtUserName.SetFocus
TxtPassword.Text = ""
micount = micount + 1
Exit Sub
Else
'判读输入密码是否正确
If Trim(mrc.Fields(1)) = Trim(TxtPassword.Text) Then
ok = True
'判断他们的等级
If Trim(mrc.Fields(2)) = "一般用户" Then
FrmMain.level2.Enabled = False
FrmMain.level3.Enabled = False
FrmMain.Show
ElseIf Trim(mrc.Fields(2)) = "操作员" Then
FrmMain.level3.Enabled = False
FrmMain.Show
Else
FrmMain.Show
End If
'把当前内容添加到worklog数据库中
'创建一个能够返回worklog的记录集
TxtSql2 = "select * from worklog_info"
'执行查询语句
Set mrcWorklog = ExecuteSQL(TxtSql2, MsgText)
'创建一个能够返回onwork的记录集
TxtSql3 = "select * from onwork_info "
'执行查询语句
Set mrcOnWork = ExecuteSQL(TxtSql3, MsgText)
mrcOnWork.AddNew
mrcOnWork.Fields(0) = Trim(TxtUserName.Text)
mrcOnWork.Fields(1) = Trim(mrc.Fields(2))
mrcOnWork.Fields(2) = Trim(Date)
mrcOnWork.Fields(3) = Trim(Time)
mrcOnWork.Fields(4) = Trim(VBA.Environ("computername"))
mrcOnWork.Update
mrcOnWork.Close
mrcWorklog.AddNew
mrcWorklog.Fields(1) = Trim(TxtUserName.Text)
mrcWorklog.Fields(2) = Trim(mrc.Fields(2)) '判断等级的
mrcWorklog.Fields(3) = Trim(Date) 'date为当前系统的日期,time为当前系统的时间
mrcWorklog.Fields(4) = Trim(Time)
mrcWorklog.Fields(7) = Trim(VBA.Environ("computername"))
mrcWorklog.Fields(8) = Trim(True)
mrcWorklog.Update
mrcWorklog.Close
mrc.Close
Me.Hide
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "提示"
TxtPassword = ""
TxtPassword.SetFocus
micount = micount + 1
End If
End If
End If
If micount = 3 Then
MsgBox "登录错误以达到三次,请重新登录!", vbOKOnly + vbExclamation, "提示"
Unload Me
End If
End Sub
上一篇: UOJ #3265. 志愿者招募加强版
下一篇: 用Java模拟一个太阳系的轨迹运转