【文章內(nèi)容簡介】
Private Sub sjlr_Click() 39。調(diào)用函數(shù)判斷是否擁有權(quán)限 使用各種功能 t = check_qx(czry_flag, 6) If t = True Then ?如果用戶擁有該權(quán)限,則進(jìn)入菜單處理程序,否則出現(xiàn)警告信息。 (1).Text = 狀態(tài): 藥費(fèi)輸入 End If End Sub ( 2) 工具欄處理代碼 。 工具欄上 的 快捷按鈕用來打開醫(yī)務(wù)收費(fèi)系統(tǒng)軟件中某個特定的窗體 。 通過工具欄,用 ? 626 ? 戶可以方便 地 直接打開經(jīng)常使用的功能,工具欄的實(shí)現(xiàn)代碼示例如下: Private Sub Toolbar1_ButtonClick(ByVal Button As ) Select Case ?判斷所按下的工具欄按鈕的名稱 Case query ?如果是查詢編輯人員 t = check_qx(czry_flag, 1) ?檢查當(dāng)前用戶是否擁有操作權(quán)限 If t = True Then (1).Text = 狀態(tài): 查詢編輯人員 ?顯示 frmqueryperson窗體 End If Case input ?如果是數(shù)據(jù) 輸 入 t = check_qx(czry_flag, 6) ?檢查當(dāng)前用戶是否擁有操作權(quán)限 If t = True Then (1).Text = 狀態(tài): 藥費(fèi)輸入 ?顯示 frmlrsj窗體 End If Case drdc ?如果是每月數(shù)據(jù)導(dǎo)出 t = check_qx(czry_flag, 17) ?檢查當(dāng)前用戶是否擁有操作權(quán)限 If t = True Then (1).Text = 狀態(tài): 每月數(shù)據(jù)導(dǎo)出 vbModal ?顯示 frmimport窗體 End If Case book ?如果是查詢報表 t = check_qx(czry_flag, 13) ?檢查當(dāng)前用戶是否擁有操作權(quán)限 If t = True Then (1).Text = 狀態(tài): 查詢報表 ?顯示 frmquerybook窗體 End If Case exit ?如果是退出 End ?退出系統(tǒng) End Select End Sub ( 3) 狀態(tài)欄處理代碼 。 狀態(tài)欄主要是為了提示用戶所做的操作, 其 代碼分散在各個菜單項(xiàng)和工具欄按鈕的程序處理事件中,示例如下: Private Sub sysjsq_Click() ?單擊系統(tǒng)計算器菜單項(xiàng) (1).Text=狀態(tài):系統(tǒng)計算器 ?顯示狀態(tài):系統(tǒng)計算器 Shell , vbNormalFocus ?顯示操作系統(tǒng)所帶的計數(shù)器 End sub 以上介紹了主窗體的主要代碼,在該窗體中,主要是 對 界面及程序?qū)Ш?進(jìn)行 設(shè)計,沒附錄 B 醫(yī)務(wù)收費(fèi)系統(tǒng) ? 627 ? 有涉及到具體的數(shù)據(jù)庫設(shè)計,在后面的窗體分析中主要 是 數(shù)據(jù)庫的設(shè)計 , 以及其他數(shù)據(jù)庫的設(shè)計。 操作人員管理 操作人員管理系統(tǒng)主要是用來管理對該軟件進(jìn)行操作的工作人員,同時系統(tǒng)所提供的用戶權(quán)限設(shè)置能夠提高系統(tǒng)的安全性,并對不同性質(zhì)的人員 給予 不同的權(quán)限,滿足了不同人員對 該軟件的需求。 為了方便集中管理數(shù)據(jù) 庫 表和數(shù)據(jù)源,我們把數(shù)據(jù)庫的連接放到 模塊中,應(yīng)用 ADO 接口技術(shù)直接和 SQL Server 2021 數(shù)據(jù)庫服務(wù)器建立連接。具體實(shí)現(xiàn)代碼如下: Public Sub condatabase() Set = New = sqloledb (Data Source).Value = SQLServerName 39。建立與 SQLServer的連接 (Initial Catalog).Value = DataBaseName 39。數(shù)據(jù)庫的名稱 (Integrated Security).Value = SSPI End Sub 1.操作人員維護(hù)模塊 操作人員維護(hù)模塊的運(yùn)行界面如圖 A27 所示 。 圖 A27 操作人員維護(hù)模塊的運(yùn)行界面 界面設(shè)計主要是利用了樹型控件來實(shí)現(xiàn)的,讀者可以參考前面章節(jié) 。 程序說明:操作人員管理窗體代碼 ; 程序模塊名稱: frmsq; 重要控件: TreeView、圖像列表 Imagelist 等 ; 相關(guān)數(shù)據(jù)庫表: user_load。 下面學(xué)習(xí)窗體的核心代碼。 ? 628 ? 該窗體主要實(shí)現(xiàn)增加用戶、刪除用戶、對用戶進(jìn)行授權(quán),主要是面向管理人員對操作人員的操作進(jìn)行管理, 滿足 不同層次的人員對系統(tǒng)不同的需求。 Private SubCommand3_Click () 39。刪除操作人員的命令按鈕 39。顯示對話框,是否刪除操作人員 t = MsgBox(你是否確定刪除該操作員! , vbOKCancel, 確定嗎? ) If t = 1 Then 39。如果返回 1,則進(jìn)行刪除操作 39。判斷是否有記錄,如果沒有 記 錄,則提示選擇操作人員 If = True Or = True Then t = MsgBox(請選擇操作員姓名! , vbOKOnly, 無記錄 ) Else 39。否則進(jìn)行刪除,并顯示成功刪除操作人員對話框 t = MsgBox(成功刪除操作員姓名! , vbOKOnly, 成功 ) End If 39。清除 TreeView中節(jié)點(diǎn)的內(nèi)容 = True 39。設(shè)置 sorted屬性為真 Set mnode = () = 操作員姓名 39。節(jié)點(diǎn)顯示 “操作員姓名 ” = 2 39。設(shè)置節(jié)點(diǎn)的圖表為 imagelist1中的圖 2 Set rspsw = New select*from user_load,adOpenStatic,adLockPessimistic Do Until 39。用 rspsw中的記錄對 treeview進(jìn)行加載 Set mnode = (1, tvwChild) 39。添加 treeview的孩子 = (user_name) 39。使其文本為 rspsw字段中的用戶名 = 1 39。設(shè)置節(jié)點(diǎn)的圖表為 imagelist1中的圖 1 39。記錄往后移動一條 Loop Else Exit Sub End If 39。將用戶數(shù)據(jù) 庫 表中的用戶名加載到 treeview控件中 Private SubPrivate Sub loadtreeview() = True 39。將 treeview的排序設(shè)為真 Set mnode = () = 操作員姓名 39。節(jié)點(diǎn)顯示 “操作員姓名 ” = 2 39。設(shè)置節(jié)點(diǎn)的圖表為 imagelist1中的圖 2 If = 1 Then Else Call condatabase 39。連接數(shù)據(jù)庫 End If Set rspsw = New 39。打開 rspsw記錄集 附錄 B 醫(yī)務(wù)收費(fèi)系統(tǒng) ? 629 ? select * from user_load, , adOpenStatic, adLockPessimistic Do Until 39。用 rspsw中的記錄對 treeview進(jìn)行加載 Set mnode = (1, tvwChild) 39。添加 treeview的孩子 = (user_name) 39。使其文本為 rspsw字段中的用戶名 = 1 39。設(shè)置節(jié)點(diǎn)的圖表為 imagelist1中的圖 1 39。記錄往后移動一條 Loop End Sub Private Sub Form_Load() 39。窗體加載過程 Call loadtreeview 39。調(diào)用 loadtreeview過程 End Sub Private Sub tvwdb_NodeClick(ByVal Node As ) 39。處理 nodeclick事件 If = 1 Then 39。如果只有一個根節(jié)點(diǎn),則退出程序 Exit Sub End If Call check_condatabase 39。檢查是否連接數(shù)據(jù)庫,如果連接了則放棄,否則連接 If = 1 Then 39。是根節(jié)點(diǎn) nodename = 39。將刪除的變量賦值給 nodename Set rsdel = New 39。獲得該節(jié)點(diǎn)的用戶名的所有 資料 select * from user_load where user_name=39。 amp。 nodename amp。 39。, , _ adOpenStatic, adLockPessimistic End If End Sub 2. 操作人員授權(quán)窗體 在圖 A27 中,單擊【授權(quán)】按鈕會彈操作員授權(quán)窗體, 如圖 A28 所示 。 圖 B28 操作員授權(quán)窗體 ? 630 ? 該窗體主要實(shí)現(xiàn)對用戶授權(quán),用戶的授權(quán)是采用 0, 1 編碼 來 實(shí)現(xiàn)的。如果該用戶擁有某項(xiàng)權(quán)限,則該權(quán)限為 1;反之,則 為 0。 界面主要是 SSTab 的設(shè)計,讀者可以參考前面章節(jié)的設(shè)計。 程序說明:操作人員管理窗體 ; 程序模塊名稱: frmczql; 重要控件: SSTab 控件 等 ; 相關(guān)數(shù)據(jù)庫表: user_load。 下面學(xué)習(xí)窗體中的核心代碼。 ( 1)“確定” 按鈕單擊事件 代碼。 Private SubCommand3_Click () 39。單擊確定按鈕事件 Dim ql_flag As String 39。定義變量 ql_flag存放用戶權(quán)限字段 Dim flag As String 39。定義變量 flag值為 0、 1的字符變量 For i = 0 To 4 If Check1(i).Value = 1 Then 39。判斷 =0時的符號 flag = 1 39。如果有選擇復(fù)選框的值,則 flag為 1 Else flag = 0 39。否則為 0 End If ql_flag = ql_flag amp。 flag 39。將連續(xù)變量連接起來 Next i For j = 0 To 7 If Check2(j).Value = 1 Then 39。判斷 =1時的符號 flag = 1 39。如果有選擇復(fù)選框的值,則 flag為 1 Else flag = 0 39。否則為 0 End If ql_flag = ql_flag amp。 flag Next j For k = 0 To 3 If Check3(k).Value = 1 Then 39。判斷 =2時的符號 flag = 1 39。如果有選擇復(fù)選框的值,則 flag為 1 Else flag = 0 39。否則為 0 End If ql_flag = ql_flag amp。 flag Next k (ql_flag)=ql_flag39。對 user_load表中的 “ql_flag”進(jìn)行賦值 39。對該記錄進(jìn)行更新操作 MsgBox 成功對該操作員 進(jìn)行授權(quán) !, vbOKOnly + vbExclamation, 完成 ?顯示成功操作對話框 End Sub 附錄 B 醫(yī)務(wù)收費(fèi)系統(tǒng) ? 631 ? ( 2) 窗體加載時 Load 事件代碼 。 Private Sub Form_Load() 39。加載窗體 Call condatabase 39。連接數(shù)據(jù)庫 Label1(1