在找師傅之前,先找小夥伴們挑了兩邊錯,出了很多的問題之後又找了師傅還是出了問題,下面是我出的問題得總結。
在驗項目之前
1.上下機邏輯問題
之前我一直將系統的初衷理解錯了,所以我在設計的時候時在上機了一個號之後就不可以上機了(cmdOK.Enabled=True)(下機亦是如此),後來發現理解錯了,後來刪除了這一行程序。
2.查看上機狀態的窗體中下機後仍然可查詢
產生這個問題的原因是將選中或者全部下機後,僅僅將line_info中的時間等內容改了過來,忘記刪除了online_info表裏的相關數據,以致於可以查詢出來。
3.MSHFlexGrid控件點擊多次查詢,出現重複記錄
這個問題產生的原因是在點擊查詢的時候沒有將之前的內容刪除,導致的問題,添加以下程序即可:
Private Sub cmdInquery_Click()
MSHFlexGrid.Clear
With MSHFlexGrid
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "卡號"
.TextMatrix(0, 1) = "姓名"
.TextMatrix(0, 2) = "上機日期"
.TextMatrix(0, 3) = "上機時間"
.TextMatrix(0, 4) = "下機日期"
.TextMatrix(0, 5) = "下機時間"
.TextMatrix(0, 6) = "消費金額"
.TextMatrix(0, 7) = "餘額"
.TextMatrix(0, 8) = "備註"
End With
End Sub
4.在改密碼後點擊取消仍然要退出系統重新登陸
添加一個變量用於判斷消息框結果
Private Sub cmdOK_Click()
Dim a As VbMsgBoxResult
a = MsgBox("密碼已修改完畢,是否重新登錄?", vbOKCancel + vbQuestion, "提示")
If a = vbOK Then
Unload Me
Unload frmMain
frmLogin.Show
End If
End Sub
5.全部刪除但還是一條一條刪除
之前試過全部刪除,用for…next循環但是錯誤沒有改過來,就是一直出現下標越界的問題,一直就是改不過來後來問了幾個小夥伴解決了這個問題,我之前時從第一行檢索到最後一行,後來是改到了最後一行到第一行,又進行小部分的改變,以下是整改之後的程序例子如下:
Private Sub cmdDelete_Click()
Dim line As Integer '定義行數
Dim a As VbMsgBoxResult '定義消息框結果
Dim i As Integer '定義一個整型變量,用戶判斷刪除記錄數
'對user_info表操作
Dim mrcuser As ADODB.Recordset '用於存放記錄集 '用戶存放記錄集
Dim userSQL As String '用於存放SQL語句 '用於存放SQL語句
Dim userMsgText As String '用於存放返回信息 '用戶存放返回信息
i = 0 '初始值i等於0
a = MsgBox("確定所選刪除用戶嗎?", vbOKCancel + vbQuestion, "詢問")
'當a爲OK時進行刪除記錄,否則退出記錄
If a = vbOK Then
'以MSHFlexGrid控件的行數爲基礎做循環,進行刪除記錄
For line = MSHFlexGrid.Rows To 1 Step -1
'判斷是否選中
If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
Set mrcuser = ExecuteSQL(userSQL, userMsgText)
'當MSHFlexGrid裏的第一列內容和本機登錄的內容一樣時不允許刪除
If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
MsgBox "用戶:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登錄,無法刪除!", vbOKOnly + vbExclamation, "警告"
Else
'刪除MSHFlexGrid和數據表中的數據
i = i + 1
MSHFlexGrid.RemoveItem line - 1
mrcuser.Delete
mrcuser.Close
End If
End If
Next line
If i <> 0 Then
MsgBox "刪除用戶成功!", vbOKOnly + vbInformation, "提示"
Else
MsgBox "請選擇所刪除的用戶!", vbOKOnly + vbInformation, "提示"
Exit Sub '退出過程
End If
End Sub
6.函數應用的問題
對VB中的各個函數用法不是很靈活,出了以些小錯誤。
7.登錄錯誤次數過多時沒有彈出消息框自動退出系統
當時由於急於求成,急於快點寫完程序,忘記了添加代碼,後來又忘了這件事,導致出現問題。
8.出現的以下細節方面的問題
由於沒注意到從而出現一些小問題,例如強制下機,時間超過當前日期,粘貼問題的等等。解決方法見以下博客:
https://blog.csdn.net/TGB__15__ZYB/article/details/97781785
在驗收項目之後
1.在上機狀態顯示全部時,點擊多次出現重複
這個真沒注意到,前面未驗收前想到過這個問題,但是這個窗忽略了,以致於出了錯。解決方法同上
Private Sub cmdInquery_Click()
MSHFlexGrid.Clear
With MSHFlexGrid
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "卡號"
.TextMatrix(0, 1) = "姓名"
.TextMatrix(0, 2) = "上機日期"
.TextMatrix(0, 3) = "上機時間"
.TextMatrix(0, 4) = "下機日期"
.TextMatrix(0, 5) = "下機時間"
.TextMatrix(0, 6) = "消費金額"
.TextMatrix(0, 7) = "餘額"
.TextMatrix(0, 8) = "備註"
End With
End Sub
2.註冊重複
當時只是着急實現功能,忘記了判斷重複,在註冊時,沒有想到判斷重複的問題,出了錯誤。
3.退卡等窗體在顯示文本的文本框屬性不妥
對僅僅用於顯示的文本框,應該改變一下邊框形式,即重新設置文本框的“BorderStyle”屬性,選擇合適的屬性值
4.在添加和刪除用戶時刪除了正在登錄的用戶
在刪除的時候連接User_info表,查看是否用戶正在登錄,如果是則不允許刪除,移動到下一個,否則允許刪除代碼如下:
Private Sub cmdDelete_Click()
Dim line As Integer '定義行數
Dim a As VbMsgBoxResult '定義消息框結果
Dim i As Integer '定義一個整型變量,用戶判斷刪除記錄數
'對user_info表操作
Dim mrcuser As ADODB.Recordset '用於存放記錄集 '用戶存放記錄集
Dim userSQL As String '用於存放SQL語句 '用於存放SQL語句
Dim userMsgText As String '用於存放返回信息 '用戶存放返回信息
i = 0 '初始值i等於0
a = MsgBox("確定所選刪除用戶嗎?", vbOKCancel + vbQuestion, "詢問")
'當a爲OK時進行刪除記錄,否則退出記錄
If a = vbOK Then
'以MSHFlexGrid控件的行數爲基礎做循環,進行刪除記錄
For line = MSHFlexGrid.Rows To 1 Step -1
'判斷是否選中
If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
Set mrcuser = ExecuteSQL(userSQL, userMsgText)
'當MSHFlexGrid裏的第一列內容和本機登錄的內容一樣時不允許刪除
If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
MsgBox "用戶:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登錄,無法刪除!", vbOKOnly + vbExclamation, "警告"
Else
'刪除MSHFlexGrid和數據表中的數據
i = i + 1
MSHFlexGrid.RemoveItem line - 1
mrcuser.Delete
mrcuser.Close
End If
End If
Next line
If i <> 0 Then
MsgBox "刪除用戶成功!", vbOKOnly + vbInformation, "提示"
Else
MsgBox "請選擇所刪除的用戶!", vbOKOnly + vbInformation, "提示"
Exit Sub '退出過程
End If
End Sub
5.對日結賬單和周結賬單的認識不足
當時就沒有明白日結賬單和周結賬單是怎麼回事,就直接將數據庫中checkday_info表和checkweek_info表中的數據顯示在兩個窗體中,但是後來師傅說了,日結僅僅時顯示當天的數據,周結根據日期顯示數據,後來才明白是怎麼回事,改了過了。
第一次機房的感受
這次的機房可以說是讓我痛不欲生啊,程序是在學校的時候寫的,當時正好還有一個月期末考試,想着還沒弄完,就趕緊着寫,前半個月沒有複習,一直寫程序,從早晨寫到晚上,那半個月可以說活的很充實,回宿舍就睡覺,沒空兒玩手機,那半個月的效率很高,但可以說累得快支撐不住了。這半個月過去了之後就一直沒有沒有在進行過機房,直到考完試,暑假來了這纔開始進行優化,然而這個時候出現了一個新的問題,對之前自己寫的程序的邏輯忘了,因爲沒有註釋。之後又開始重新理解優化,改正錯誤,一直弄了七八天才找師傅去驗收了項目,結果,還是出了一些不該錯的問題。
這次的過程也給了我一個教訓,對於程序一定要寫註釋,不僅僅是爲了別人,更重要的是,當你自己回來進行重溫時能後理解自己寫的是什麼,讓自己輕鬆,高效率的去溫習程序。之前一直沒有將註釋這件事放在心上,但這次之後我感覺自己應該不會在不寫註釋了。再有就是一定要在學習的時候靜下心來,一步一步有章程的進行,不可以不按順序,亂改動。在驗收前本來這些小錯誤應該可以檢測出來並改正過來,但是就是因爲粗心,不按順序來,導致了小錯誤不斷的結果。因此,無論做任何事都應給腳踏實地,切忌走捷徑,那樣只會萬劫不復。
這次的機房讓我將之前放下的知識重新的撿了起來,並且感覺對VB有了新的認識和理解。同時在師傅那裏學到了很多的東西。很感謝師傅們給我驗收項目並且在其中給我的意見和建議。