登高而望遠,感覺機房收費系統也是如此,剛開始敲機房的時候就覺得會有很多細節去考慮和新增,自己也盡量邊敲邊完善,但畢竟身在此山中,雲深不知處。有很多東西是當時所不曾考慮到的,所以越到後面問題所暴露出來的也就越多,下面是自己對部分細節的優化:
1、臨時使用者下機相當於退卡
txtsql = "select * from student_info where type ='臨時使用者' and cardno ='" & trim(txtcardno.text) & "'" '如果是臨時使用者下機相當於退卡
set mrc5 = executesql(txtsql, msgtext)
if not (mrc5.bof and mrc5.eof) then
mrc5.fields(10) = trim("不使用")
mrc5.update
上機時,如果此卡已登出,再次上機需要重新啟用
if trim(cstr(mrc.fields(10))) = "不使用" then '登出的卡號如果再次使用需要重新啟用
a = msgbox("此卡已登出,是否重新啟用?!", vbyesno + vbquestion, "提示")
if a = vbyes then
txtsql = "update student_info set status= '" & trim("使用") & "' where cardno = '" & txtcardno.text & "'"
else
txtcardno.text = ""
txtcardno.setfocus
exit sub
2、一開始以為值班教師表只涉及到乙個查詢,後來才發現它和上機一樣,教師登陸和退出也是一樣要留下痕跡然後更新到表的。
txtsql = "select * from user_info where userid ='" & username & "'" '根據使用者名稱來判斷使用者等級
set mrc1 = executesql(txtsql, msgtext)
if not (mrc1.bof and mrc1.eof) then
strlevel = mrc1.fields(2)
'給正在值班老師表增加一行記錄
txtsql = "select * from onwork_info"
set mrc2 = executesql(txtsql, msgtext)
mrc2.addnew
mrc2.fields(0) = username
mrc2.fields(1) = strlevel
mrc2.fields(2) = format(date, "yyyy-mm-dd")
mrc2.fields(3) = format(time, "hh:mm:ss")
mrc2.fields(4) = trim(vba.environ("computername"))
mrc2.update
'給值班記錄表新增記錄
txtsql = "select * from worklog_info"
set mrcc = executesql(txtsql, msgtext)
mrcc.addnew
mrcc.fields(1) = username
mrcc.fields(2) = strlevel
mrcc.fields(3) = format(date, "yyyy-mm-dd")
mrcc.fields(4) = format(time, "hh:mm:ss")
mrcc.fields(7) = trim(vba.environ("computername"))
mrcc.fields(8) = trim(true)
mrcc.update
3、全部學生下機,開始的時候完全沒思路,後來問的賈文靜同學,用了乙個迴圈。
private sub allstudent_click()
dim i, j as single '定義乙個迴圈
with myflexgrid
if myflexgrid.rows < 2 then '如果**行數小於2的話...
msgbox "暫無學生上機"
else
with myflexgrid
i = myflexgrid.rows - 1 'i=記錄數
for j = i to 1 step -1 '從 j = i 到 1 步長 -1
myflexgrid.rowsel = j '選中j行
call viewdata 'call了乙個選中下機過程
next j
msgbox "恭喜您,全部下機成功!", vbokonly + vbinformation, "恭喜您"
end with
end if
end with
end sub
4、在mshflexgrid中選中、移除某行
myflexgrid.selectionmode = flexselectionbyrow '單擊的時候選擇的是整行
myflexgrid.focusrect = flexfocusnone '在當前單元的周圍畫乙個焦點框
myflexgrid.highlight = flexhighlightwithfocus '該值決定了所選定的單元是否突出顯示
.removeitem .rowsel '移除所選的那行
5、根據使用者不同的等級來限制使用者的管理許可權
private sub mdiform_load()
dim mrcc as adodb.recordset
dim txtsql as string
dim msgtext as string
dim strlevel as string '定義變數
txtsql = "select * from user_info where userid ='" & username & "'" '根據使用者名稱來判斷使用者等級
set mrcc = executesql(txtsql, msgtext)
strlevel = mrcc!level
select case trim(strlevel)
case "管理員"
case "操作員" '如果是操作員,則管理員那一欄不可用
administrator.enabled = false
case "一般使用者" '如果是一般使用者,則管理員和操作員兩欄不可用
administrator.enabled = false
operator.enabled = false
end select
end sub
6、如果有些地方實在是不好解決的話,在不傷大雅的情況下還是可以用下on error goto進行錯誤跳轉的。
機房收費系統之結尾
機房收費系統在這個冬月告乙個不完美的結局,剛開始接觸他的時候,各種糾結,各種逃避,各種不想做,接觸乙個新的事物,內心充滿了恐懼與排斥,機房收費系統與學生管理系統不一樣,沒有原始碼,這個時候,需要自己不斷的給予自己鼓勵,七 期的師哥師姐都做出來了,你完全有理由相信,自己也能做出來。機房收費系統來來回回...
機房收費系統之思路
機房收費系統的資料放在手裡已經有好一段時間了,卻遲遲沒有開始動工。不知道是對它產生的牴觸心理,還是自己本身就好懶。總是放著不肯前進。但是這幾天看到同學們的進度都好快,有的甚至都已經結束了。不能再偷懶了,話說進度不用太趕,但是自己心裡還是很著急的。畢竟大家的起跑點都是一樣的,怎麼能夠在半路落在別人身後...
機房收費之充值窗體
自學生系統之後的另乙個系統,不過這次沒有原始碼,需要自己去慢慢摸索,不能著急,在此期間也出了好多問題,下面來看看我弄了一下午的充值窗體吧 充值窗體功能 為卡充值金額,並對最新餘額進行更新。步驟 1 輸入卡號後,判斷該卡是否未註冊或者已登出 通過學生資訊表查詢 有個提示。2 輸入充值金額後判斷該金額是...