課程設(shè)計論文基于VB的考勤管理系統(tǒng)設(shè)計_第1頁
課程設(shè)計論文基于VB的考勤管理系統(tǒng)設(shè)計_第2頁
課程設(shè)計論文基于VB的考勤管理系統(tǒng)設(shè)計_第3頁
課程設(shè)計論文基于VB的考勤管理系統(tǒng)設(shè)計_第4頁
課程設(shè)計論文基于VB的考勤管理系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、考勤管理系統(tǒng)1.1系統(tǒng)設(shè)計1.1.1系統(tǒng)的設(shè)計目標考勤管理系統(tǒng)的總體任務(wù)是實現(xiàn)考勤管理的規(guī)范化、考勤數(shù)據(jù)統(tǒng)計的自動化。系統(tǒng)的設(shè)計目標即是完成這一任務(wù)。1.1.2設(shè)計思想系統(tǒng)應(yīng)盡量結(jié)合單位現(xiàn)有的軟硬件環(huán)境,充分利用現(xiàn)有資源。所以本系統(tǒng)除了要能夠手工錄入員工的考勤記錄外,還應(yīng)能夠與考勤機相結(jié)合,實現(xiàn)考勤信息錄入自動化。系統(tǒng)的考勤類型應(yīng)能夠靈活設(shè)定,以便用戶隨時調(diào)整。系統(tǒng)應(yīng)具備報表功能,查詢統(tǒng)計時能夠直接生成相關(guān)員工的考勤報表,報表要能夠?qū)С?、打印。系統(tǒng)應(yīng)該具備數(shù)據(jù)庫維護功能,能夠讓用戶進行數(shù)據(jù)表的備份和恢復。系統(tǒng)應(yīng)采用模塊化程序設(shè)計,便于功能的組合與修改,以及以后盡可能進行補充。綜合考慮,確定本系

2、統(tǒng)使用c/s工作模式,以oracle作為后臺數(shù)據(jù)庫,visual basic 6.0為前臺程序開發(fā)語言。1.1.3系統(tǒng)功能模塊劃分u 根據(jù)系統(tǒng)的設(shè)計思想,劃分系統(tǒng)功能為以下幾個模塊。u 員工信息的管理模塊u 考勤類型的設(shè)定模塊u 員工考勤信息手工錄入模塊u 經(jīng)考勤機生成并處理的考勤信息導入模塊u 員工考勤情況統(tǒng)計報表生成模塊u 數(shù)據(jù)庫維護模塊系統(tǒng)功能模塊圖如圖1.1所示考勤管理系統(tǒng)員工信息管理考勤類型設(shè)定信息手工錄入信息導入生成統(tǒng)計報表數(shù)據(jù)庫維護圖1.1系統(tǒng)功能模塊圖1.2系統(tǒng)設(shè)計數(shù)據(jù)庫設(shè)計在數(shù)據(jù)庫程序設(shè)計中是非常重要的一個環(huán)節(jié),具體指的是數(shù)據(jù)庫中各個表結(jié)構(gòu)的設(shè)計,包括信息保存在哪些表格中,各

3、個表詳細結(jié)構(gòu)以及各個表格之間的關(guān)系。數(shù)據(jù)庫結(jié)構(gòu)是數(shù)據(jù)庫應(yīng)用程序的基礎(chǔ),它的好壞直接影響到應(yīng)用程序的執(zhí)行效率,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計得好,就會減少數(shù)據(jù)庫的存儲量,并且使數(shù)據(jù)保持很高的完整性和一致性,還會提高數(shù)據(jù)查詢的數(shù)度,運用前臺編程工具時,也會有一定程序上的簡化。數(shù)據(jù)庫設(shè)計分為以下三個階段。l 數(shù)據(jù)庫需求分析l 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計l 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計1.2.1數(shù)據(jù)庫需求分析數(shù)據(jù)庫需求分析是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的第一個階段,也是非常重要的一個階段,這個階段的任務(wù)是收集數(shù)據(jù)基本信息和取得數(shù)據(jù)處理的流程。需求分析要做的工作是與用戶結(jié)合,調(diào)查用戶需要操作的資料,以決定在數(shù)據(jù)庫中存儲什么數(shù)據(jù),還要弄清用戶怎么處理各

4、種數(shù)據(jù)資料,理清數(shù)據(jù)庫中個數(shù)據(jù)之間的關(guān)系。這個階段的工作成功應(yīng)該有以下三個方面的內(nèi)容。l 數(shù)據(jù)項:每種具體數(shù)據(jù)的名稱、意義、類型、取值范圍以及與其他數(shù)據(jù)項之間的邏輯關(guān)系。l 數(shù)據(jù)集:若干數(shù)據(jù)項的有邏輯關(guān)聯(lián)的集合,包括名稱、意義和組成數(shù)據(jù)集的數(shù)據(jù)項。l 數(shù)據(jù)流:應(yīng)用系統(tǒng)運行時,數(shù)據(jù)是怎樣輸入、處理和輸出的。這三個方面的內(nèi)容就是本系統(tǒng)的數(shù)據(jù)字典文檔,如果數(shù)據(jù)庫需求分析階段的工作沒有做好,數(shù)據(jù)字典在將來的系統(tǒng)開發(fā)過程中就有可能隨時發(fā)生變化,開發(fā)后期可能面臨程序午休止的修改和調(diào)試,甚至是一切的推到重來,因此一定要重視這個階段的工作。系統(tǒng)處理數(shù)據(jù)的流程,如圖1.2所示生成考勤統(tǒng)計表員工信息數(shù)據(jù)考勤類型數(shù)

5、據(jù)員工考勤信息數(shù)據(jù)考勤類型設(shè)定員工信息管理考勤信息手工錄入考勤類型數(shù)據(jù)導入圖1.2數(shù)據(jù)流程圖通過分析數(shù)據(jù)流程,設(shè)計數(shù)據(jù)集和數(shù)據(jù)項如下。l 員工信息數(shù)據(jù)集,數(shù)據(jù)項為員工號、員工姓名、員工性別、員工所屬部門。l 考勤類型數(shù)據(jù)集,數(shù)據(jù)項為類型號、類型名稱。l 員工考勤情況數(shù)據(jù)集,數(shù)據(jù)項為考勤日期、員工號、考勤類型號、備注。1.2.2數(shù)據(jù)庫結(jié)構(gòu)設(shè)計本系統(tǒng)采用e-r圖的方法來進行數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。1.員工信息實體e-r圖員工信息實體e-r圖如圖1.3所示。員工信息員工號員工姓名員工性別所屬部門圖1.3員工信息實體e-r圖2.考勤類型實體e-r圖考勤類型實體e-r圖如圖1.4所示??记陬愋皖愋吞栴愋兔Q

6、圖1.4考勤類型實體e-r圖3.員工考勤情況實體e-r圖員工考勤情況實體e-r圖如圖1.5所示。員工考勤情況考勤日期員工號考勤類型號備注 圖1.5員工考勤情況實體e-r圖4.實體和實體之間的關(guān)系e-r圖 實體和實體之間的關(guān)系e-r圖如圖1.6所示。員工具有哦、考勤情況屬于考勤類型圖1.6各實體之間的關(guān)系e-r圖數(shù)據(jù)庫各個表格的設(shè)計結(jié)果,如表1.11.3所示。表1.1考勤類型表格kqlxb字段數(shù)據(jù)類型能否為空備注bhvarchar2(4)not null類型編號(主鍵)lxvarchar2(20)null類型名稱表1.2員工信息表格ygb字段數(shù)據(jù)類型能否為空備注bhvarchar2(8)not

7、null員工編號(主鍵)xmvarchar2(12)not null員工姓名xbvarchar2(2)not null員工性別bmvarchar2(20)null員工部門表1.3考勤管理表格kqglb字段數(shù)據(jù)類型能否為空備注kqrqdatenot null考勤日期(主鍵1)ygbhvarchar2(8)not null員工編號(主鍵2)(指向員工信息表bh字段的外鍵)lxbhvarchar2(4)not null類型編號(指向考勤類型表bh字段的外鍵)bzvarchar2(20)null備注1.3設(shè)計系統(tǒng)的界面1.3.1窗口的設(shè)計 經(jīng)過構(gòu)細,本系統(tǒng)需要創(chuàng)建五個窗口:考勤管理系統(tǒng)登錄窗口、考勤類

8、型管理窗口、員工信息管理窗口、考勤情況錄入窗口、考勤信息統(tǒng)計窗口1. 考勤管理系統(tǒng)登錄窗口運行界面2. 考勤管理系統(tǒng)登錄窗口設(shè)計界面主要事件與代碼:private sub form_resize() image1.width = me.width image1.height = me.height label1.left = (me.width) / 2 - label1.width / 2 label2.left = (me.width) / 2 - label2.width / 2 label3.left = (me.width) / 2 - label3.width / 2end sub

9、private sub toolbar1_buttonclick(byval button as mscomctllib.button)select case button.keycase bt2frm_yggl.show , mecase bt3frm_kqlx.show , mecase bt4frm_kqlr.show , mecase bt5frm_kqtj.show , meend selectend sub3. 員工信息管理窗口運行界面4. 員工信息管理窗口設(shè)計界面屬性設(shè)置:1. frm_yggl的屬性設(shè)置屬性名值含義caption員工信息管理borderstyle1fixed s

10、inglestartupposition1所有者中心2. combo1的屬性設(shè)置style2dropdown listlist男 女lockedtrue3. datagrid1的屬性設(shè)置datasourceadodc14. text1-text3的屬性設(shè)置lockedtrue主要事件與代碼:dim add_flag as boolean, modify_flag as booleanprivate sub adodc1_movecomplete(byval adreason as adodb.eventreasonenum, byval perror as adodb.error, adsta

11、tus as adodb.eventstatusenum, byval precordset as adodb.recordset) if adodc1.recordset.recordcount 0 then text1.text = adodc1.recordset.fields(bh) & text2.text = adodc1.recordset.fields(xm) & text3.text = adodc1.recordset.fields(bm) & if adodc1.recordset.fields(xb) = 男 then combo1.listindex = 0 else

12、 combo1.listindex = 1 end if else text1.text = text2.text = text3.text = combo1.listindex = 0 call showbuttons end if end subprivate sub cmdadd_click()text1.text = text2.text = text3.text = text1.locked = falsetext2.locked = falsetext3.locked = falsecombo1.locked = falsedatagrid1.enabled = falseadd_

13、flag = truecall showbuttonsend subprivate sub cmdcancle_click() if adodc1.recordset.recordcount 0 then text1.text = adodc1.recordset.fields(bh) & text2.text = adodc1.recordset.fields(xm) & text3.text = adodc1.recordset.fields(bm) & if adodc1.recordset.fields(xb) = 男 then combo1.listindex = 0 else co

14、mbo1.listindex = 1 end ifelse text1.text = text2.text = text3.text = combo1.listindex = 0 end if text1.locked = true text2.locked = true text3.locked = true combo1.locked = true datagrid1.enabled = true add_flag = false modify_flag = false call showbuttonsend subprivate sub cmddelete_click()ret = ms

15、gbox(你真的要刪除 + adodc1.recordset.fields(xm) + 的記錄嗎?, vbyesno + vbquestion + vbdefaultbutton2, 提示)if ret = vbyes then adodc1.recordset.delete adodc1.recordset.updateend ifdatagrid1.setfocusend subprivate sub cmdexit_click()unload meend subprivate sub cmdmodify_click()text1.locked = falsetext2.locked =

16、falsetext3.locked = falsecombo1.locked = falsedatagrid1.enabled = falsemodify_flag = truecall showbuttonsend subprivate sub cmdsave_click()text1.text = trim(text1.text)text2.text = trim(text2.text)text3.text = trim(text3.text)if is_data_ok() = false then exit subend ifin_bh = text1.textin_xm = text2

17、.textin_xb = combo1.textin_bm = text3.textif add_flag = true then adodc1.recordset.addnewend ifadodc1.recordset.fields(bh) = in_bhadodc1.recordset.fields(xm) = in_xmadodc1.recordset.fields(xb) = in_xbadodc1.recordset.fields(bm) = in_bmadodc1.recordset.updateif add_flag = true then adodc1.recordset.f

18、ind bh= + in_bh + , , adsearchforward, 1end iftext1.locked = truetext2.locked = truetext3.locked = truecombo1.locked = truedatagrid1.enabled = trueadd_flag = falsemodify_flag = falsecall showbuttonsdatagrid1.setfocusend subprivate sub form_load()add_flag = falsemodify_flag = falsecall showbuttonsend

19、 subprivate sub showbuttons()if add_flag = false and modify_flag = false thencmdadd.enabled = trueif adodc1.recordset.recordcount = 0 then cmdmodify.enabled = false cmddelete.enabled = falseelse cmdmodify.enabled = true cmddelete.enabled = trueend ifcmdexit.enabled = truecmdcancle.enabled = falsecmd

20、save.enabled = falseelsecmdadd.enabled = falsecmdmodify.enabled = falsecmddelete.enabled = falsecmdexit.enabled = falsecmdcancle.enabled = truecmdsave.enabled = trueend ifend subprivate sub form_queryunload(cancel as integer, unloadmode as integer)if add_flag = true or modify_flag = true then msgbox

21、 (數(shù)據(jù)正在編輯,不能退出!) cancel = trueend ifend subprivate sub text1_keypress(keyascii as integer)if (keyascii 57) and keyascii 8 then keyascii = 0end ifend subprivate function is_data_ok() as booleanif modify_flag = true then old_bh = adodc1.recordset.fields(bh)end ifif len(text1.text) 8 then msgbox (編號的長度不

22、夠!) is_data_ok = false text1.setfocus exit functionend ifif len(text2.text) = 0 then msgbox (姓名未輸入!) is_data_ok = false text2.setfocus exit functionend ifif add_flag = true then adodc2.recordsource = select * from ygb where bh= + text1.text + adodc2.refresh else adodc2.recordsource = select * from y

23、gb where bh= + text1.text + and bh + old_bh + adodc2.refreshend ifif adodc2.recordset.recordcount 0 then msgbox (編號有重復!) is_data_ok = false text1.setfocus exit functionend ifis_data_ok = trueend function5. 考勤情況錄入窗口運行界面6. 考勤情況錄入窗口設(shè)計界面屬性設(shè)置:1. frm_kqlr的屬性設(shè)置屬性名值含義caption考勤情況錄入borderstyle1fixed singlesta

24、rtupposition1所有者中心2.數(shù)據(jù)源adodc的設(shè)置adodc1名稱adodatagridadodc2名稱adokqglbadodc3名稱adokqlxbadodc4名稱adoygb2. 下拉框combo的屬性設(shè)置combo1名稱comboygb生成員工列表combo2名稱combokqlxb生成考勤類型列表lockedtruestyle2dropdown list3. datagrid1的屬性設(shè)置datasourceadodatagrid4. text1的屬性設(shè)置lockedtrue主要事件與代碼: dim add_flag as boolean, modify_flag as b

25、oolean dim ygb_rec as integer, lxb_rec as integer dim kq_date as string add_flag:增加狀態(tài)標志(布爾型) modify_flag:修改狀態(tài)標志(布爾型) ygb_rec:員工表記錄總數(shù)(數(shù)值型) lxb_rec:類型表記錄總數(shù)(數(shù)值型) kq_date:考勤的日期(類型是字符型) private sub adodatagrid_movecomplete(byval adreason as adodb.eventreasonenum, byval perror as adodb.error, adstatus as

26、adodb.eventstatusenum, byval precordset as adodb.recordset) if adodatagrid.recordset.recordcount 0 then 數(shù)據(jù)表內(nèi)容不為空 comboygb.text = adodatagrid.recordset.fields(員工) & combokqlxb.text = adodatagrid.recordset.fields(類型) & text1.text = adodatagrid.recordset.fields(bz) & end if end sub private sub cmdadd_c

27、lick() 增加按鈕 增加按鈕的單擊事件 1:生成員工的增加列表框 call formyglist(kq_date, add) 2:文本框、組合框解鎖 text1.text = 文本框清空 text1.locked = false 取消對象的只讀 comboygb.locked = false combokqlxb.locked = false comboygb.listindex = 0 combokqlxb.listindex = 0 3:鎖定表格、日期不能動 datagrid1.enabled = false 鎖定表格 dtpicker1.enabled = false 鎖定日期 4:

28、設(shè)置表單狀態(tài) add_flag = true 設(shè)置為增加編輯狀態(tài) call showbuttons 刷新按鈕狀態(tài) comboygb.setfocus end sub private sub cmdmodify_click() 修改按鈕 修改按鈕的單擊事件 1:文本框、組合框解鎖 text1.locked = false 取消對象的只讀 combokqlxb.locked = false 2:鎖定表格、日期不能動 datagrid1.enabled = false 鎖定表格 dtpicker1.enabled = false 鎖定日期 3:設(shè)置表單狀態(tài) modify_flag = true 設(shè)置

29、為修改編輯狀態(tài) call showbuttons 刷新按鈕狀態(tài) combokqlxb.setfocus end sub private sub cmdcancle_click() 取消按鈕 取消按鈕的單擊事件 1:生成員工的瀏覽列表 call formyglist(kq_date, browse) 2:恢復數(shù)據(jù),并設(shè)置文本框、下拉框?qū)ο笾蛔x if adodatagrid.recordset.recordcount 0 then 數(shù)據(jù)表內(nèi)容不為空 comboygb.text = adodatagrid.recordset.fields(員工) & combokqlxb.text = adodat

30、agrid.recordset.fields(類型) & text1.text = adodatagrid.recordset.fields(bz) & end if comboygb.locked = true 設(shè)置對象的只讀 combokqlxb.locked = true 3:表格、日期控件可以動 datagrid1.enabled = true 取消鎖定表格 dtpicker1.enabled = true 取消鎖定日期 4:修改表單的狀態(tài) add_flag = false 設(shè)置為非增加狀態(tài) modify_flag = false 設(shè)置為非修改狀態(tài) call showbuttons 刷

31、新按鈕狀態(tài) datagrid1.setfocus end sub private sub cmdsave_click() 保存按鈕 保存按鈕的單擊事件 1:保存的信息保存到變量 text1.text = trim(text1.text) in_date = kq_date 日期信息 in_yg = trim(comboygb.text) 員工信息 in_lx = trim(combokqlxb.text) 類型信息 in_bz = text1.text 備注信息 - 2:數(shù)據(jù)保存 if add_flag = true then 增加數(shù)據(jù) adokqglb.recordset.addnew el

32、se 修改數(shù)據(jù) adokqglb.recordset.find kqrq= + in_date, , adsearchforward, 1 adokqglb.recordset.find ygbh= + mid(in_yg, 1, 8) + , , adsearchforward 定位記錄 end if adokqglb.recordset.fields(kqrq) = in_date 日期 adokqglb.recordset.fields(ygbh) = mid(in_yg, 1, 8) 員工編號 adokqglb.recordset.fields(lxbh) = mid(in_lx, 1

33、, 4) 類型編號 adokqglb.recordset.fields(bz) = in_bz 備注 adokqglb.recordset.update 保存到后臺數(shù)據(jù)庫 call formyglist(kq_date, browse) adokqglb.refresh 數(shù)據(jù)源刷新 adodatagrid.refresh 表格刷新 adodatagrid.recordset.find 員工= + in_yg + , , adsearchforward - 3:保存的后續(xù)工作(設(shè)置對象只讀、取消表格日期鎖定、設(shè)置表單狀態(tài)) text1.locked = true 設(shè)置對象的只讀 comboygb

34、.locked = true combokqlxb.locked = true datagrid1.enabled = true 取消鎖定表格 dtpicker1.enabled = true 取消日期鎖定 add_flag = false 設(shè)置為非增加狀態(tài) modify_flag = false 設(shè)置為非修改狀態(tài) call showbuttons 刷新按鈕狀態(tài) datagrid1.setfocus end sub private sub cmdexit_click() 退出按鈕 退出按鈕的單擊事件 unload me end sub private sub form_load() 表單的初始

35、化事件 1:生成日期信息,考勤日期默認為今天的日期 with dtpicker1 .year = year(date) .month = month(date) .day = day(date) .customformat = yyyy年mm月d日 dddd 設(shè)置日期格式 end with kq_date = cstr(date) 2:生成數(shù)據(jù)集-kqglb with adokqglb 與kqglb表關(guān)聯(lián) .connectionstring = provider=oraoledb.oracle.1;password=xscj1234;persist security info=true;use

36、r id=system;data source=xscj .commandtype = adcmdtext .recordsource = select * from kqglb order by kqrq .refresh end with - 3:生成數(shù)據(jù)集-kqlxb with adokqlxb 與kqlxb表關(guān)聯(lián) .connectionstring = provider=oraoledb.oracle.1;password=xscj1234;persist security info=true;user id=system;data source=xscj .commandtype =

37、 adcmdtext .recordsource = select bh| |lx as 類型 from kqlxb order by bh .refresh end with lxb_rec = adokqlxb.recordset.recordcount 保存類型表數(shù)據(jù)集記錄總數(shù) 生成combokqlxb列表(列表格式:類型編號+名稱) while adokqlxb.recordset.eof true combokqlxb.additem (adokqlxb.recordset.fields(類型) adokqlxb.recordset.movenext wend if lxb_rec

38、0 then 類型表非空 combokqlxb.listindex = 0 end if - 4:生成數(shù)據(jù)集-ygb with adoygb 與ygb表關(guān)聯(lián) .connectionstring = provider=oraoledb.oracle.1;password=xscj1234;persist security info=true;user id=system;data source=xscj .commandtype = adcmdtext .recordsource = select * from ygb .refresh end with ygb_rec = adoygb.rec

39、ordset.recordcount 保存員工表數(shù)據(jù)集的記錄總數(shù) call formyglist(kq_date, browse) 生成今天的考勤員工瀏覽列表 - 5:生成表格的數(shù)據(jù)集 with adodatagrid 與表單的datagrid1表格相關(guān)聯(lián) .connectionstring = provider=oraoledb.oracle.1;password=xscj1234;persist security info=true;user id=system;data source=xscj .commandtype = adcmdtext .recordsource = select

40、 kqrq,ygbh| |xm as 員工,b.bh| |lx as 類型,bz from ygb a,kqlxb b,kqglb c where kqrq= + kq_date + and a.bh=c.ygbh and b.bh=c.lxbh order by a.bh .refresh end with - add_flag = false 設(shè)置表單為非增加狀態(tài) modify_flag = false 設(shè)置表單為非修改狀態(tài) call showbuttons 刷新按鈕狀態(tài) end sub private sub form_queryunload(cancel as integer, unl

41、oadmode as integer) 表單退出前發(fā)生的事件 if add_flag = true or modify_flag = true then msgbox (正在編輯,不能退出!) cancel = true end if end sub private sub dtpicker1_change() 日期改變時發(fā)生的事件 kq_date = cstr(dtpicker1.year) + - + cstr(dtpicker1.month) + - + cstr(dtpicker1.day) 新日期 call formyglist(kq_date, browse) 重新生成員工下拉列表

42、 with adodatagrid .recordsource = select kqrq,a.bh| |xm as 員工,b.bh| |lx as 類型,bz from ygb a,kqlxb b,kqglb c where kqrq= + kq_date + and a.bh=c.ygbh and b.bh=c.lxbh order by kqrq .refresh 數(shù)據(jù)源刷新(表格數(shù)據(jù)刷新) end with call showbuttons 刷新按鈕狀態(tài) datagrid1.setfocus end sub private sub showbuttons() 自定義過程,作用:控制按鈕

43、的顯示 if add_flag = false and modify_flag = false then 數(shù)據(jù)瀏覽狀態(tài)(非增加、非修改) if ygb_rec = 0 or lxb_rec = 0 then 員工表或考勤類型表內(nèi)容為空 cmdadd.enabled = false else if adodatagrid.recordset.recordcount = ygb_rec then 所有員工的考勤信息已錄入 cmdadd.enabled = false else cmdadd.enabled = true end if end if if adodatagrid.recordset.

44、recordcount 0 then 表格數(shù)據(jù)集非空 cmdmodify.enabled = true else 表格數(shù)據(jù)集為空 cmdmodify.enabled = false end if cmdsave.enabled = false cmdcancle.enabled = false cmdexit.enabled = true else 數(shù)據(jù)編輯狀態(tài)(增加、修改) cmdadd.enabled = false cmdmodify.enabled = false cmdexit.enabled = false cmdsave.enabled = true cmdcancle.enab

45、led = true end if end sub private sub formyglist(byval list_date as string, byval oper_mode as string) 自定義函數(shù),作用是形成員工的下拉列表 形參1:list_date,日期型變量,表示考勤的日期 形參2:oper_mode,字符型變量,表示操作的模式(增加模式:add 瀏覽模式:browse) with adoygb if oper_mode = add then 增加操作模式 .recordsource = select bh| |xm as 員工 from ygb where bh no

46、t in (select ygbh from kqglb where kqrq= + list_date + ) order by bh else 瀏覽操作模式 .recordsource = select bh| |xm as 員工 from ygb where bh in (select ygbh from kqglb where kqrq= + list_date + ) order by bh end if .refresh end with 生成comboygb列表(格式:員工編號+姓名) comboygb.clear 清除列表 while adoygb.recordset.eof

47、true comboygb.additem (adoygb.recordset.fields(員工) adoygb.recordset.movenext wend end sub7. 考勤類型管理窗口運行界面8. 考勤類型管理窗口設(shè)計界面 主要事件與代碼:dim add_flag as boolean, modify_flag as booleanprivate sub adodc1_movecomplete(byval adreason as adodb.eventreasonenum, byval perror as adodb.error, adstatus as adodb.event

48、statusenum, byval precordset as adodb.recordset)if adodc1.recordset.recordcount 0 then text1.text = adodc1.recordset.fields(bh) & text2.text = adodc1.recordset.fields(lx) & else text1.text = text2.text = call showbuttonsend ifend subprivate sub showbuttons()if add_flag = false and modify_flag = false thencmdadd.enabled = trueif adodc1.recordset.recordcount = 0 then

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論