機房收費-----實時錯誤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中的信息。總共需要三個。

 

登陸窗體

流程圖

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   '用來記錄錯誤的次數

    UserName = "" '用來存放賬戶名

    '判斷用戶名是否爲空
    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
                UserName = Trim(TxtUserName.Text)


                '判斷他們的等級
                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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章