1. 程式人生 > >機房收費系統----使用者登陸軟體關閉軟體資訊在worklog表中的新增

機房收費系統----使用者登陸軟體關閉軟體資訊在worklog表中的新增

   當機房快要接近尾聲的時候,我發現有一個很重要的程式沒有做,那就是使用軟體的使用者登陸和關閉軟體的資訊獲取,也就是在worklog_info表中加資訊。

編寫過程

1.我們這個時候需要用到標籤(標籤的使用和作用我之前的部落格有提到,不明白的可以看我之前的部落格),之前咱們學生管理系統裡學到的東西現在就要使用了,鍛鍊我們舉一反三的能力,先在模組裡宣告全域性變數myBookmark,由於myBook不只是在同一個窗體裡用,所以用的是全域性變數。

'進行宣告
Public myBookmark As Variant

2.在登陸視窗介面記錄相應的資訊,由於現在只是登陸,當我們點選確定登陸按鈕時,我們只知道登陸者ID,登陸者時間,登陸日期,以及登陸電腦。所以其他不知道的資訊設定先在資料庫中設定為空即可,我們之後再新增上。該程式碼在frmLogin登陸視窗中編寫

Private Sub cmdSure_Click()
    Dim a As String
    Dim txtSQL As String
    Dim mrc As ADODB.Recordset
    Dim Msgtext As String
    '判斷輸入使用者名稱是否為空
    If Trim(txtUserName.Text = "") Then
        MsgBox "請輸入使用者名稱", vbOKOnly + vbExclamation, "警告"
        txtUserName.SetFocus
    Else
        txtSQL = "select * from user_info where userid='" & txtUserName.Text & "'"
        Set mrc = ExecuteSQL(txtSQL, Msgtext)
        If mrc.EOF = True Then
            MsgBox "沒有這個使用者,請重新輸入使用者名稱!", vbOKOnly + vbExclamation, "警告"
            txtUserName.SetFocus
        Else
            If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
                OK = True
                a = mrc.Fields(2)
                mrc.Close


                '獲取目前已知的登陸者資訊
                txtSQL = "select * from worklog_info"
                Set mrc = ExecuteSQL(txtSQL, Msgtext)
                mrc.AddNew
                mrc.Fields(1) = txtUserName.Text
                mrc.Fields(2) = a
                mrc.Fields(3) = Date
                mrc.Fields(4) = Time
                mrc.Fields(7) = GetThisComputerName
                mrc.Fields(8) = "True"
                mrc.Update

                '用標籤進行標記
                myBookmark = mrc.Bookmark
                mrc.Close

                '窗體隱藏,顯示主窗體
                Me.Hide
                frmMain.Show
                
'                Username = Trim(txtUserName.Text)
            Else
            
                MsgBox "密碼輸入不正確,請重新輸入!", vbOKOnly + vbExclamation, "警告"
                miCount = miCount + 1
                If miCount = 1 Then
                    MsgBox "還有兩次機會", vbOKOnly + vbExclamation, "提示"
                End If
                If miCount = 2 Then
                    MsgBox "還有一次機會", vbOKOnly + vbExclamation, "提示"
                End If
                If miCount = 3 Then
                    End
                End If
                txtPassword.SetFocus
                txtPassword.Text = ""
            End If
        End If
    End If
    

End Sub

3.如果我們關閉機房收費系統軟體時,它是直接關閉的,沒有任何停留,不能獲取到它的關閉時間,所以我們就需要用Queryunload事件(Queryunload事件的具體使用方法見我的上一篇部落格),在該事件中,我們編寫程式碼,就可以在資料庫中選取到之前沒有新增完的那一條資訊,繼續新增完。此事件在frmMain主視窗中編寫。

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim mrc As ADODB.Recordset
    Dim txtSQL As String
    Dim Msgtext As String
    a = MsgBox("您真的要退出嗎", vbOKCancel, "提示")
    If a = vbOK Then
        txtSQL = "select * from worklog_info"
        Set mrc = ExecuteSQL(txtSQL, Msgtext)

        '回到標籤記錄的位置
        mrc.Bookmark = myBookmark
        
        mrc.Fields(5) = Date
        mrc.Fields(6) = Time
        mrc.Fields(8) = "False"
        '完成更新
        mrc.Update
        mrc.Close
        Cancel = 0
    Else
        Cancel = 1
    End If
End Sub

現在我們就完成了,是不是感覺並沒有那麼難。其實我之前自己還想了一個別的辦法,感覺不太好,後來想到了學生管理裡的標籤,標籤的作用真的巨大。我們之前學的東西都是有用的,多動腦,多思考,一切都會容易的。加油!