機房收費系統 之 結賬

2021-07-05 02:37:33 字數 4441 閱讀 2663

結賬,顧名思義就是把錢算一下。

這的結賬不是給每乙個卡號結賬,而是給乙個操作員結賬,算一下這個操作員一共賣卡張數,退卡張數,實收金額,應收金額等等。

結賬的介面是這個樣子的,其中用到乙個選項卡

這個窗體相比較而言還有有點難度的。別看乙個小小的操作員使用者名稱,它不是一般的combo控制項,對於一般的combo控制項下拉列表中的內容, 

例如使用combobox1.additem "你新增的內容"   

只要寫在窗體的載入事件下都可以;而對於這個窗體,下拉框中的內容不是一成不變的,而是根據sql資料庫表中的內容而變化的,所以這個控制項編寫下拉框內容的時候,需要連線資料庫

根據表中的使用者許可權,操作員就只有乙個,所以combo控制項的下拉框中只有乙個使用者——3。

動態的combo下拉框的**是這樣的

private sub form_load()

dim txtsql as string

dim msgtext as string

dim mrcuser as adodb.recordset

txtsql = "select * from user_info " '連線資料庫

set mrcuser = executesql(txtsql, msgtext)

do while not mrcuser.eof '利用do while 語句把表中的操作員的使用者名稱顯示到窗體上

cmbuserid.additem mrcuser.fields(0)

mrcuser.movenext

loop

end sub

解決完這個問題後,還有另乙個問題,就是當你選擇好使用者名稱的時候,讓下面的真實姓名也顯示出來,因為都是一一對應的

對於這段**,是寫在cmbuserid 的click事件下的,**如下

private sub cmbuserid_click()

dim txtsql as string

dim msgtext as string

dim mrcuser as adodb.recordset

txtsql = "select * from user_info where userid='" & cmbuserid.text & "'" ' 以選擇的userid作為條件

set mrcuser = executesql(txtsql, msgtext)

cmbusername.text = mrcuser.fields(3) & ""

end sub

接下來就是另乙個問題了,乙個選項卡中有好幾個選項卡,那麼應該把**寫在什麼的事件下面呢,對於這個問題,我當時根本沒有頭緒,是問的別人。
if sstab1.tab = 1 then     '填寫購卡**

if sstab1.tab = 2 then '填寫充值**

if sstab1.tab = 3 then '填寫退卡**

if sstab1.tab = 4 then '填寫臨時使用者**

if sstab1.tab = 5 then '填寫彙總**

if sstab1.tab = 6 then '填寫退出**

這幾個選項卡中,就是彙總的**有點難,其他的都還好。

(1)購卡張數:用到student表,就是算一下這個操作員一共賣了多少張卡,其中會用到乙個recordcount   

(2)退卡張數:用到cancelcard 表,同樣算一下一共退了多少卡

(3)總售卡數:我是這樣理解的:總售卡數=售卡張數+退卡張數

(4)充值金額:用到recharge表,就是算一下總的充值錢數,要用到sum 函式

(5)退卡金額:用到cancelcard 表,同樣算一下一共退的錢數

(6)應收金額:應收金額=充值金額-退卡金額

'填寫彙總選項卡

if sstab1.tab = 4 then

'售卡張數由student表決定

txtsql = "select * from student_info where userid='" & trim(cmbuserid.text) & " '"

set mrcstudent = executesql(txtsql, msgtext)

txtcardsell.text = mrcstudent.recordcount

'退卡張數由cancelcard表決定

txtsql = "select * from cancelcard_info where userid='" & cmbuserid.text & "'"

set mrccancelcard = executesql(txtsql, msgtext)

txtcardback.text = mrccancelcard.recordcount

'總售卡張數=售卡+退卡

txtsumcardsell.text = mrcstudent.recordcount + mrccancelcard.recordcount

'填寫充值金額

txtsql = "select sum (addmoney) from recharge_info where userid='" & cmbuserid.text & "'"

set mrcrecharge = executesql(txtsql, msgtext)

txtrecharge.text = trim(mrcrecharge.fields(0)) & ""

'填寫退卡金額

txtsql = "select sum(cancelcash)from cancelcard_info where userid='" & cmbuserid.text & "'"

set mrccancelcard = executesql(txtsql, msgtext)

txtcardbackcash.text = mrccancelcard.fields(0) & ""

'填寫臨時收費 利用studnet表找到誰是臨時使用者,找到卡號,然後從recharge表中找到consume之和

txtsql = "select * from student_info where userid='" & trim(cmbuserid.text) & " 'and type='" & "臨時使用者" & "'"

set mrcstudent = executesql(txtsql, msgtext)

do while not mrcstudent.eof

txtsql = "select * from recharge_info where cardno='" & trim(mrcstudent!cardno) & "' and status ='未結賬' and userid='" & trim(cmbuserid.text) & "'"

set mrcrecharge = executesql(txtsql, msgtext)

if mrcrecharge.eof then

goto nx

end if

txttmprecharge.text = mrcrecharge.fields(0)

a = a + val(mrcrecharge!addmoney)

nx: mrcstudent.movenext

loop

txttmprecharge.text = a

'沒有臨時收費的使用者

if mrcrecharge.eof = true then

msgbox "沒有臨時使用者收費!", vbokonly + vbexclamation, "警告"

exit sub

end if

txtshouldcash.text = val(txtrecharge.text) - val(txtcardbackcash.text) & ""

end if

以上就是我的結賬,若有錯誤,請大神指出~~~

機房收費系統 之結賬

通過使用者名稱顯示真實姓名 txtsql select from user info where userid comboopuserid.text set mrc executesql txtsql,msgtext combooprealname.text mrc username mrc.clo...

機房收費系統之」結賬「

根據使用者名稱選姓名 txtsql select from user info where userid trim combousername.text set mrc executesql txtsql,msgtext comboname.text mrc.fields 3 mrc.close 根...

機房收費系統之結賬

工程 部件 控制項 microsoft tabbed dialog control 6.0 購卡 card info 表中未結賬,當前操作員的卡號資訊 充值 recahrge info 表中未結賬的,該操作員的充值資訊 退卡 cancelcard info表中 未結賬,該操作員的退卡資訊 臨時使用者...