机房收费-----实时错误3265&登录窗体

终于弄完一个窗体了,之前我通过查看别人的博客,然后一直在想他们为什么都要用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中的信息。总共需要三个。

 

登陆窗体

流程图

扫描二维码关注公众号,回复: 8637921 查看本文章
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
发布了39 篇原创文章 · 获赞 5 · 访问量 4523

猜你喜欢

转载自blog.csdn.net/weixin_44663188/article/details/103999590