【正文】
了動(dòng)態(tài)連接數(shù)據(jù)庫(kù)的方法與數(shù)據(jù)庫(kù) USER 進(jìn)行連接采用的是 SQL OLEDB 應(yīng)用接口 CONOpen strr u Form2Text1Text 把卡號(hào)賦給 u str select 密碼 from 用戶信息 where 卡號(hào) u SQL 數(shù)據(jù)庫(kù)查詢語(yǔ)句根據(jù)卡號(hào)把所查詢的密碼數(shù)據(jù)放入 str 中 Set RS New ADODBRecordset 設(shè)置 RS 為新 的 Recordset 對(duì)象 RSOpen str CON adOpenDynamic adLockPessimistic If RSEOF True Then 當(dāng)前記錄指針無(wú)效說(shuō)明不存在這個(gè)用戶 If i 2 Then Form3Show Form3Label1Caption 沒(méi)有此用戶請(qǐng)檢查并重新輸入 u u 重新設(shè)置為空 接下來(lái)就是比較從所輸卡號(hào)中取出的密碼與用戶輸入的密碼進(jìn)行比較 If Trim RSFields 0 Trim Form2Text2Text Then 檢驗(yàn)密碼是否相同 Form4Show 密碼相同轉(zhuǎn)入服務(wù)界面 RSClose Unload Form2 在窗體中直接通過(guò)程序代碼調(diào)用在模塊中的 Checkuser 函數(shù)即可后面的界面都是采用這種方法都不再進(jìn)行仔細(xì)說(shuō)明 主界面實(shí)現(xiàn) 圖 5 服務(wù)界面 在主界面中有 5 個(gè)服務(wù)按鈕 設(shè)置了一個(gè)整型變量 j 在點(diǎn)擊各種服務(wù)的同時(shí)J 也被賦予了不同的數(shù)值用以后面記錄用戶操作信息寫(xiě)入數(shù)據(jù)庫(kù) Private Sub Command1_Click If Option1 0 Value True Then j 1 Unload Form4 Form5Show Else If Option1 1 Value True Then j 2 Unload Form4 Form6Show Else If Option1 2 Value True Then j 3 Unload Form4 Form7Show Else If Option1 4 Value True Then J 5 Unload Form4 Form12Show Else If Option1 3 Value True Then j 4 Unload Form4 Call Query Form8Show Form8Label2Caption u 查詢實(shí)現(xiàn) 在主模塊中的查詢函數(shù) Public Sub Query Dim str2 As String str2 select from 用戶信息 where 卡號(hào) u Set RS New ADODBRecordset 圖 6 查詢界面 RSOpen str2 CON adOpenDynamic adLockPessimistic Form8Label5Caption RSFields 金額 取款實(shí)現(xiàn) 圖 7 取款界面 取款函數(shù)相對(duì)于其他函數(shù)就相對(duì)復(fù)雜一點(diǎn)因?yàn)橛泻芏嗲闆r需要判斷列如只能取 50與 100的整數(shù)就需要對(duì) 50取模還需要判斷所取金額是否大于卡上的余額余額不足那也是沒(méi)法成功取款的用戶取了一定數(shù)量的錢(qián)后還需要把新的數(shù)據(jù)重新寫(xiě)入數(shù)據(jù)庫(kù) Public Public Sub TakeMoney Dim str1 As String str1 select from 用戶信息 where 卡號(hào) u Set RS New ADODBRecordset RSOpen str1 CON adOpenDynamic adLockPessimistic 前面也是對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接并把用戶信息根據(jù)所輸卡號(hào)輸入到記錄集中 If i 2 Then 在中文服務(wù)下 m Form5Text1Text If m Then m 為空說(shuō)明用戶沒(méi)有輸入金額 k 0 這里的 K 為全局變量 在后面數(shù)據(jù)庫(kù)對(duì)用戶操作表進(jìn)行寫(xiě)入時(shí)非 常有用 k 的值標(biāo)識(shí)操作的成功與否 k 0 操作失敗 k 1 則為成功 Form3Show Form3Label1Caption 請(qǐng)您正確輸入金額 Exit Sub End If If m Mod 50 0 Then 所輸金額不能被 50 整除 k 0 Form3Show Form3Label1Caption 請(qǐng)您正確輸入金額 Form5Text1Text Else If RSFields 金額 CCur m Then 用戶卡中金額小與輸入的金額 k 0 Form3Show Form3Label1Caption 金額不足 Form5Text1Text Exit Sub Else k 1 排除所有不正確情況即輸入正確則對(duì) k 賦值為 1 標(biāo)識(shí)操作成功 Money RSFields 金額 RSFields 金額 Money Form5Text1Text 表中用戶金額減去所取金額 RSUpdate 將新的數(shù)據(jù)寫(xiě)入所取位置 RSClose Call InsertDatabase 把操作插入用戶操作表這個(gè)函數(shù)將在后面介紹其功能 Unload Form5 Form9Show Form9Label1Caption 交易成功謝謝您的使用請(qǐng)拿好您的鈔票 Form11Show Form9SetFocus End If End If 轉(zhuǎn)賬實(shí)現(xiàn) 轉(zhuǎn)帳功能要求用戶輸入對(duì)方卡號(hào)及轉(zhuǎn)帳金額并且對(duì)方卡號(hào)也必須是在數(shù)據(jù)庫(kù)中存在的卡號(hào)否則會(huì)出錯(cuò)這里對(duì)數(shù)額上沒(méi)有要求并不要求是整數(shù)可隨意輸入轉(zhuǎn)帳金額 圖界面 在程序?qū)崿F(xiàn)中同樣要對(duì)用戶輸入的信息要驗(yàn)證其正確性對(duì)方卡號(hào)必須真實(shí)存在所輸入金額不得超過(guò)卡上金額等等 Public Sub Trans Dim str3 As String transcard Form7Text1Text transmoney Form7Text2Text str3 select from 用戶信息 where 卡號(hào) transcard Set RS New ADODBRecordset RSOpen str3 CON adOpenDynamic adLockPessimistic 數(shù)據(jù)庫(kù)連接 If i 2 Then If Form7Text2Text Or Form7Text1Text Then 輸入卡號(hào)或輸入金額為空 則出錯(cuò) k 0 Form3Show Form3Label1Caption 請(qǐng)你正確輸入 Form7Text1Text Form7Text2Text Call InsertDatabase 每出現(xiàn)一次錯(cuò)誤就調(diào)用數(shù)據(jù)庫(kù)寫(xiě)入函數(shù)對(duì)用戶操作信息表進(jìn)行添加操作信息此函數(shù)將在后面介紹 Exit Sub End If If RSEOF True Then 記錄集中沒(méi)有所輸入卡號(hào)的用戶 則出錯(cuò) k 0 Form3Show Form3Label1Caption 沒(méi)有此用戶請(qǐng)檢查并重新輸入 Call InsertDatabase Exit Sub End If If transcard u Then 轉(zhuǎn)帳卡號(hào)與實(shí)施轉(zhuǎn)帳操作的卡號(hào)相同則出錯(cuò) k 0 Form3Show Form3Label1Caption 操作錯(cuò)誤同帳戶不可以轉(zhuǎn)帳 Call InsertDatabase Exit Sub End If str6 select from 用戶信息 where 卡號(hào) u Set RS New ADODBRecordset RSOpen str6 CON adOpenDynamic adLockPessimistic If RSFields 金額 Val Form7Text2Text Then 判斷輸入金額與卡中余額 k 0 Form3Show Fo