考勤管理系统

上传人:d****2 文档编号:216791035 上传时间:2023-06-08 格式:DOCX 页数:39 大小:629.08KB
收藏 版权申诉 举报 下载
考勤管理系统_第1页
第1页 / 共39页
考勤管理系统_第2页
第2页 / 共39页
考勤管理系统_第3页
第3页 / 共39页
资源描述:

《考勤管理系统》由会员分享,可在线阅读,更多相关《考勤管理系统(39页珍藏版)》请在装配图网上搜索。

1、考勤管理系统1.1系统设计1.1.1系统的设计目标 考勤管理系统的总体任务是实现考勤管理的规范化、考勤数据统计的自动 化。系统的设计目标即是完成这一任务。1.1.2 设计思想 系统应尽量结合单位现有的软硬件环境,充分利用现有资源。所以本系统除 了要能够手工录入员工的考勤记录外,还应能够与考勤机相结合,实现考勤信息 录入自动化。系统的考勤类型应能够灵活设定,以便用户随时调整。 系统应具备报表功能,查询统计时能够直接生成相关员工的考勤报表,报表 要能够导出、打印。系统应该具备数据库维护功能,能够让用户进行数据表的备份和恢复。 系统应采用模块化程序设计,便于功能的组合与修改,以及以后尽可能进行 补充

2、。综合考虑,确定本系统使用C/S工作模式,以oracle作为后台数据库,visual basic 6.0 为前台程序开发语言。1.1.3 系统功能模块划分根据系统的设计思想,划分系统功能为以下几个模块。员工信息的管理模块 考勤类型的设定模块 员工考勤信息手工录入模块 经考勤机生成并处理的考勤信息导入模块 员工考勤情况统计报表生成模块 数据库维护模块系统功能模块图如图 1.1 所示图1.1系统功能模块图1.2系统设计数据库设计在数据库程序设计中是非常重要的一个环节,具体指的是数据库 中各个表结构的设计,包括信息保存在哪些表格中,各个表详细结构以及各个表 格之间的关系。数据库结构是数据库应用程序的

3、基础,它的好坏直接影响到应用程序的执行 效率,数据库结构设计得好,就会减少数据库的存储量,并且使数据保持很高的 完整性和一致性,还会提高数据查询的数度,运用前台编程工具时,也会有一定 程序上的简化。数据库设计分为以下三个阶段。数据库需求分析数据库概念结构设计 数据库逻辑结构设计1.2.1数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,也是非常重要的一个阶 段,这个阶段的任务是收集数据基本信息和取得数据处理的流程。需求分析要做的工作是与用户结合,调查用户需要操作的资料,以决定在数 据库中存储什么数据,还要弄清用户怎么处理各种数据资料,理清数据库中个数 据之间的关系。这个阶段的工作成功应

4、该有以下三个方面的内容。数据项:每种具体数据的名称、意义、类型、取值范围以及与其他数 据项之间的逻辑关系。 数据集:若干数据项的有逻辑关联的集合,包括名称、意义和组成数 据集的数据项。 数据流:应用系统运行时,数据是怎样输入、处理和输出的。这三个方面的内容就是本系统的数据字典文档,如果数据库需求分析阶段的 工作没有做好,数据字典在将来的系统开发过程中就有可能随时发生变化,开发 后期可能面临程序午休止的修改和调试,甚至是一切的推到重来,因此一定要重 视这个阶段的工作。系统处理数据的流程,如图 1.2 所示图1.2 数据流程图通过分析数据流程,设计数据集和数据项如下。 员工信息数据集,数据项为员工

5、号、员工姓名、员工性别、员工所属部 门。 考勤类型数据集,数据项为类型号、类型名称。 员工考勤情况数据集,数据项为考勤日期、员工号、考勤类型号、备注。 1.2.2数据库结构设计本系统采用E-R图的方法来进行数据库概念结构设计。1员工信息实体E-R图员工信息实体E-R图如图1.3所示。员工信息图 1.3 员工信息实体 E-R 图2考勤类型实体E-R图考勤类型实体E-R图如图1.4所示。3员工考勤情况实体E-R图员工考勤情况实体E-R图如图1.5所示。4实体和实体之间的关系E-R图实体和实体之间的关系 E-R 图如图 1.6 所示。图1.6各实体之间的关系E-R图数据库各个表格的设计结果,如表 1

6、.11.3 所示。表11考勤类型表格KQLXB字段数据类型能否为空备注BHVARCHAR2(4)NOT NULL类型编号(主键)LXVARCHAR2(20)NULL类型名称表1.2员工信息表格YGB字段数据类型能否为空备注BHVARCHAR2(8)NOT NULL员工编号(主键)XMVARCHAR2(12)NOT NULL员工姓名XBVARCHAR2(2)NOT NULL员工性别BMVARCHAR2(20)NULL员工部门表1.3考勤管理表格KQGLB字段数据类型能否为空备注KQRQDATENOT NULL考勤日期(主键1)YGBHVARCHAR2(8)NOT NULL员工编号(主键2)(指向

7、员工信息表BH字段的外键)LXBHVARCHAR2(4)NOT NULL类型编号(指向考勤类型表BH字段的外键)BZVARCHAR2(20)NULL备注1.3设计系统的界面1.3.1窗口的设计经过构细,本系统需要创建五个窗口:考勤管理系统登录窗口、考勤类型管理窗口、员工信息管理窗口、考勤情况录入窗口、考勤信息统计窗口1.考勤管理系统登录窗口运行界面2.考勤管理系统登录窗口设计界面主要事件与代码:Private Sub Form_Resize()Imagel.Width = MeWidthImage1.Height = Me.HeightLabel1.Left = (Me.Width) / 2

8、- Labell.Width / 2Label2Left = (Me.Width) / 2 - Label2Width / 2Label3Left = (Me.Width) / 2 - Label3.Width / 2 End SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLibButton) Select Case ButtonKeyCase bt2frm_ygglShow , MeCase bt3frm_kqlxShow , Me Case bt4 frm_kqlrShow , Me Case bt5Frm_kqtj

9、Show , MeEnd SelectEnd Sub3.员工信息管理窗口运行界面飢员工信息管理员工信息管理1姓名性别部门1张成11男1财务部李区11男00000003刘元薇人号处刘奇男人号处00000006罗桂英玄财务部周k男会计系.i:ii:ii:ii:ii:ii:ii:i8张以能男会计丟00000009谭也男人号处王三梅玄会计系.增抑取消修改保存删除退岀4.员工信息管理窗口设计界面沆考勤管理至统-f r*_yssl (For*)问区T属性设置:1. Frm_yggl的属性设置属性名值含义Caption员工信息管理BorderStyle1Fixed singleStartUpPosition

10、1所有者中心2. Combo1的属性设置Style2Dropdown ListLis t男女LockedTrue3. DataGrid1的属性设置DataSourceAdodc14. Text1Text3的属性设置LockedTrue主要事件与代码: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.EventSta

11、tusEnum, ByVal pRecordset As ADODB.Recordset)If Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(xm) & Text3.Text = Adodc1.Recordset.Fields(bm) & If Adodc1.Recordset.Fields(xb) = 男 ThenCombo1.ListIndex = 0ElseCombo1.ListIndex = 1End I

12、fElseText1.Text = Text2.Text = Text3.Text = Combo1.ListIndex = 0Call showbuttonsEnd IfEnd SubPrivate Sub cmdadd_Click()Text1.Text = Text2.Text = Text3.Text = Text1.Locked = FalseText2.Locked = FalseText3.Locked = FalseCombo1.Locked = FalseDataGrid1.Enabled = False add_flag = TrueCall showbuttonsEnd

13、SubPrivate Sub cmdcancle_Click()If Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(xm) & Text3.Text = Adodc1.Recordset.Fields(bm) & If Adodc1.Recordset.Fields(xb) = 男 ThenCombo1.ListIndex = 0ElseCombo1.ListIndex = 1End IfElseText1.Te

14、xt = Text2.Text = Text3.Text = Combo1.ListIndex = 0End IfText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueCombo1.Locked = TrueDataGrid1.Enabled = Trueadd_flag = False modify_flag = FalseCall showbuttonsEnd SubPrivate Sub cmddelete_Click()ret = MsgBox(你真的要删除+ Adodcl .Recordse tFields(xm) + 的记

15、录吗?, vbYesNo + vbQuestion + vbDefaultButton2, 提示) If ret = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.UpdateEnd IfDataGrid1.SetFocusEnd SubPrivate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdmodify_Click()Text1.Locked = FalseText2.Locked = FalseText3.Locked = FalseCombo1.Locked = FalseD

16、ataGrid1.Enabled = False modify_flag = True Call 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 ThenExit SubEnd Ifin_bh = Text1.Textin_xm = Text2.Text in_xb = Combo1.Text in_bm = Text3.Text I

17、f add_flag = True ThenAdodc1.Recordset.AddNewEnd IfAdodc1.Recordset.Fields(bh) = in_bhAdodc1.Recordset.Fields(xm) = in_xmAdodc1.Recordset.Fields(xb) = in_xbAdodc1.Recordset.Fields(bm) = in_bm Adodc1.Recordset.Update If add_flag = True ThenadSearchForward,Adodc1.Recordset.Find bh= + in_bh + , , 1End

18、IfText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueCombo1.Locked = TrueDataGrid1.Enabled = True add_flag = False modify_flag = FalseCall showbuttonsDataGrid1.SetFocusEnd SubPrivate Sub Form_Load() add_flag = False modify_flag = FalseCall showbuttonsEnd SubPrivate Sub showbuttons()If add_flag

19、 = False And modify_flag = False Then cmdadd.Enabled = TrueIf Adodc1.Recordset.RecordCount = 0 ThenCmdmodify.Enabled = Falsecmddelete.Enabled = FalseElseCmdmodify.Enabled = Truecmddelete.Enabled = TrueEnd Ifcmdexit.Enabled = TrueCmdcancle.Enabled = FalseCmdsave.Enabled = FalseElsecmdadd.Enabled = Fa

20、lseCmdmodify.Enabled = Falsecmddelete.Enabled = Falsecmdexit.Enabled = FalseCmdcancle.Enabled = TrueCmdsave.Enabled = TrueEnd IfEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode AsInteger)If add_flag = True Or modify_flag = True ThenMsgBox (数据正在编辑,不能退出!)Cancel = TrueEnd IfEnd SubPriv

21、ate Sub Text1_KeyPress(KeyAscii As Integer)If (KeyAscii 57) And KeyAscii 8 ThenKeyAscii = 0End IfEnd SubPrivate Function is_data_ok() As BooleanIf modify_flag = True Thenold_bh = Adodc1.Recordset.Fields(bh)End IfIf Len(Text1.Text) 8 ThenMsgBox (编号的长度不够!)is_data_ok = FalseText1.SetFocusExit FunctionE

22、nd IfIf Len(Text2.Text) = 0 ThenMsgBox (姓名未输入!)is_data_ok = FalseText2.SetFocusExit FunctionEnd IfIf add_flag = True ThenAdodc2.RecordSource = select * from ygb where bh= + Text1.Text + Adodc2.RefreshElseAdodc2.RecordSource = select * from ygb where bh= + Text1.Text + and bh + old_bh + Adodc2.Refres

23、hEnd IfIf Adodc2.Recordset.RecordCount 0 ThenMsgBox (编号有重复!) is_data_ok = FalseText1 .SetFocusExit FunctionEnd Ifis_data_ok = TrueEnd Function5.考勤情况录入窗口运行界面考勒日期:001备注:岀勤情况:员工;)00000002 01退出取消増加6.考勤情况录入窗口设计界面到工退假假 匹旷早病事 2 3 4 LT- 6 _u _u _u -U _u _u _u -u _u _u _u _u -u _u冠考勤情况录入属性设置:1. Frm_kqlr的属性设置

24、属性名值含义Caption考勤情况录入BorderStyle1Fixed singleStartUpPosition1所有者中心2.数据源Adodc的设置Adodc1名称AdoDataGridAdodc2名称AdoKQGLBAdodc3名称AdoKQLXBAdodc4名称AdoYGB2.下拉框Combo的属性设置Combo1名称ComboYGB生成员工列表Combo2名称ComboKQLXB生成考勤类型列表LockedTrueSt yle2Dropdown List3. DataGridl的属性设置DataSourceAdoDataGrid4. Tex t1的属性设置LockedTrue主要事

25、件与代码:Dim add_flag As Boolean, modify_flag As BooleanDim ygb_rec As Integer, lxb_rec As IntegerDim kq_date As Stringadd_flag:增加状态标志(布尔型)modify_flag:修改状态标志(布尔型)ygb_rec :员工表记录总数(数值型)lxb_rec:类型表记录总数(数值型)kq_date:考勤的日期(类型是字符型)AsAsPrivate Sub AdoDataGrid_MoveComplete(ByVal adReasonADODB.EventReasonEnum, By

26、Val pError As ADODB.Error, adStatus ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)If AdoDataGrid.Recordset.RecordCount 0 Then 数据表内容不为空ComboYGB.Text = AdoDataGrid.Recordset.Fields(员工)& ComboKQLXB.Tex t = AdoDataGrid.Recordse t Fields(类型)& Text1.Text = AdoDataGrid.Recordset.Fields(bz) & E

27、nd IfEnd SubPrivate Sub cmdadd_Click() 增加按钮增加按钮的单击事件1:生成员工的增加列表框Call formyglist(kq_date, add)2:文本框、组合框解锁Text1.Text = 文本框清空Text1.Locked = False 取消对象的只读ComboYGB.Locked = FalseComboKQLXB.Locked = FalseComboYGB.ListIndex = 0ComboKQLXB.ListIndex = 03:锁定表格、日期不能动DataGrid1.Enabled = False 锁定表格DTPicker1.Enab

28、led = False 锁定日期4:设置表单状态add_flag = True 设置为增加编辑状态Call showbuttons 刷新按钮状态ComboYGB.SetFocusEnd SubPrivate Sub cmdmodify_Click() 修改按钮修改按钮的单击事件1:文本框、组合框解锁Text1.Locked = False 取消对象的只读ComboKQLXB.Locked = False2:锁定表格、日期不能动DataGrid1.Enabled = False 锁定表格DTPicker1.Enabled = False 锁定日期3:设置表单状态modify_flag = Tru

29、e 设置为修改编辑状态 Call showbuttons 刷新按钮状态 ComboKQLXB.SetFocusEnd SubPrivate Sub cmdcancle_Click() 取消按钮 取消按钮的单击事件 1:生成员工的浏览列表Call formyglist(kq_date, browse) 2:恢复数据,并设置文本框、下拉框对象只读If AdoDataGrid.Recordset.RecordCount 0 Then 数据表内容不为空ComboYGB.Text = AdoDataGrid.Recordset Fields(员工)& ComboKQLXB.Tex t = AdoData

30、Grid.Recordse t.Fields(类型)& Text1.Text = AdoDataGrid.Recordset.Fields(bz) & End IfComboYGB.Locked = True 设置对象的只读ComboKQLXB.Locked = True3:表格、日期控件可以动DataGrid1.Enabled = True 取消锁定表格DTPicker1.Enabled = True 取消锁定日期4:修改表单的状态add_flag = False 设置为非增加状态 modify_flag = False 设置为非修改状态Call showbuttons 刷新按钮状态Data

31、Grid1.SetFocusEnd SubPrivate 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:数据保存If add_flag = True Then 增加数据AdoKQGLB.Recordset.AddNewElse 修改数据AdoKQGLB.Recordset.Find k

32、qrq= + in_date, , adSearchForward, 1AdoKQGLB.Recordset.Find ygbh= + Mid(in_yg, 1, 8) + , , adSearchForward 定位记录End IfAdoKQGLB.Recordset.Fields(kqrq) = in_date 日期AdoKQGLB.Recordset.Fields(ygbh) = Mid(in_yg, 1, 8) 员工编号AdoKQGLB.Recordset.Fields(lxbh) = Mid(in_lx, 1, 4) 类型编号 AdoKQGLB.Recordset.Fields(bz

33、) = in_bz 备注AdoKQGLB.Recordset.Update 保存到后台数据库Call formyglist(kq_date, browse)AdoKQGLB.Refresh 数据源刷新AdoDataGrid.Refresh 表格刷新AdoDataGrid.Recordset.Find 员工= + in_yg + , , adSearchForward 3:保存的后续工作(设置对象只读、取消表格日期锁定、设置表单状态) Text1.Locked = True 设置对象的只读ComboYGB.Locked = TrueComboKQLXB.Locked = TrueDataGrid

34、1.Enabled = True 取消锁定表格DTPicker1.Enabled = True 取消日期锁定 add_flag = False 设置为非增加状态 modify_flag = False 设置为非修改状态 Call showbuttons 刷新按钮状态DataGrid1.SetFocusEnd SubPrivate Sub cmdexit_Click() 退出按钮退出按钮的单击事件Unload MeEnd SubPrivate Sub Form_Load()表单的初始化事件1:生成日期信息,考勤日期默认为今天的日期With DTPicker1.Year = Year(Date).

35、Month = Month(Date).Day = Day(Date).CustomFormat = yyyy 年 MM 月 d 日 dddd设置日期格式End Withkq_date = CStr(Date)2:生成数据集-KQGLBWith AdoKQGLB 与 kqglb 表关联Security.ConnectionString Provider=OraOLEDB.Oracle.1;Password=xscj1234;Persist Info=True;User ID=system;Data Source=xscj.CommandType = adCmdText.RecordSource

36、 = select * from kqglb order by kqrq .RefreshEnd With 3:生成数据集-KQLXBWith AdoKQLXB 与 kqlxb 表关联.ConnectionString = Provider=OraOLEDB.Oracle.1;Password=xscj1234;PersistSecurityInfo=True;User ID=system;Data Source=xscj.CommandType = adCmdText RecordSource = select bh| |lx as 类型 from kqlxb order by bh .Re

37、freshEnd Withlxb_rec = AdoKQLXBRecordsetRecordCount 保存类型表数据集记录总数生成comboKQLXB列表(列表格式:类型编号+名称)While AdoKQLXBRecordsetEOF TrueComboKQLXB.AddI tem (AdoKQLXB.Recordse t.Fields(类型)AdoKQLXBRecordsetMoveNextWendIf lxb_rec 0 Then 类型表非空ComboKQLXBListIndex = 0End If 4:生成数据集-YGBWith AdoYGB 与 ygb 表关联ConnectionSt

38、ring=Provider=OraOLEDBOracle1;Password=xscj1234;PersistSecurityInfo=True;User ID=system;Data Source=xscjCommandType = adCmdTextRecordSource = select * from ygbRefreshEnd Withygb_rec = AdoYGBRecordsetRecordCount 保存员工表数据集的记录总数 Call formyglist(kq_date, browse) 生成今天的考勤员工浏览列表5:生成表格的数据集With AdoDataGrid与表单

39、的datagridl表格相关联.ConnectionString=Provider=OraOLEDB.Oracle.1;Password=xscj1234;PersistSecurityInfo=True;User ID=system;Data Source=xscj.CommandType = adCmdText RecordSource = select kqrq,ygbh| |xm as 员工,bbh| |lx as 类型,bz from ygb a,kqlxb b,kqglb c where kqrq= + kq_date + and a. bh=c.ygbh and bbh=clxb

40、h order by abh.RefreshEnd With9add_flag = False设置表单为非增加状态modify_flag = False 设置表单为非修改状态Call showbuttons刷新按钮状态End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)表单退出前发生的事件If add_flag = True Or modify_flag = True ThenMsgBox (正在编辑,不能退出!)Cancel = TrueEnd IfEnd SubPrivate Sub DT

41、Picker1_Change()日期改变时发生的事件kq_date = CStr(DTPicker1.Year) + - + CStr(DTPicker1.Month) + - +CStr(DTPicker1.Day) 新日期Call formyglist(kq_date, browse) 重新生成员工下拉列表With AdoDataGrid RecordSource = select kqrq,abh| |xm as 员工,bbh| |lx as 类型,bz from ygb a,kqlxb b,kqglb c where kqrq= + kq_date + and abh=cygbh an

42、d bbh=clxbh order by kqrqRefresh 数据源刷新(表格数据刷新)End WithCall showbuttons 刷新按钮状态DataGrid1SetFocusEnd SubPrivate Sub showbuttons()自定义过程,作用:控制按钮的显示If add_flag = False And modify_flag = False Then 数据浏览状态(非 增加、非修改)If ygb_rec = 0 Or lxb_rec = 0 Then 员工表或考勤类型表内容为空 cmdaddEnabled = FalseElseIf AdoDataGridRecor

43、dsetRecordCount = ygb_rec Then 所有员工 的考勤信息已录入cmdaddEnabled = FalseElsecmdaddEnabled = TrueEnd IfEnd IfIf AdoDataGridRecordsetRecordCount 0 Then 表格数据集非空 CmdmodifyEnabled = TrueElse 表格数据集为空CmdmodifyEnabled = FalseEnd IfCmdsave.Enabled = FalseCmdcancle.Enabled = Falsecmdexit.Enabled = TrueElse 数据编辑状态(增加

44、、修改)cmdadd.Enabled = FalseCmdmodify.Enabled = Falsecmdexit.Enabled = FalseCmdsave.Enabled = TrueCmdcancle.Enabled = TrueEnd IfEnd SubPrivate Sub formyglist(ByVal list_date As String, ByVal oper_mode As String)自定义函数,作用是形成员工的下拉列表形参1: list_date,日期型变量,表示考勤的日期形参2: oper_mode,字符型变量,表示操作的模式(增加模式:add浏览模 式:br

45、owse)With AdoYGBIf oper_mode = add Then 增加操作模式.RecordSource = select bh| |xm as 员工 from ygb where bh not 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 b

46、y bhEnd If.RefreshEnd With生成comboYGB列表(格式:员工编号+姓名)ComboYGB.Clear 清除列表Wh订e AdoYGB.Recordse t.EOF TrueComboYGB.AddI tem (AdoYGB.Recordse t.Fields(员工)AdoYGB .Recordse t.M oveNex tWendEnd Sub7.考勤类型管理窗口运行界面8.考勤类型管理窗口设计界面主要事件与代码:Dim add_flag As Boolean, modify_flag As BooleanPrivate Sub Adodc1_MoveComplet

47、e(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(lx) & ElseText1.Text = Text2.Text = Ca

48、ll showbuttonsEnd IfEnd SubPrivate Sub showbuttons()If add_flag = False And modify_flag = False Then cmdadd.Enabled = TrueIf Adodc1.Recordset.RecordCount = 0 ThenCmdmodify.Enabled = Falsecmddelete.Enabled = FalseElseCmdmodify.Enabled = Truecmddelete.Enabled = TrueEnd Ifcmdexit.Enabled = TrueCmdcancl

49、e.Enabled = FalseCmdsave.Enabled = FalseElsecmdadd.Enabled = FalseCmdmodify.Enabled = Falsecmddelete.Enabled = False cmdexit.Enabled = False Cmdcancle.Enabled = True Cmdsave.Enabled = True End IfEnd SubPrivate Sub cmdadd_Click()Text1.Text = Text2.Text = Text1.Locked = FalseText2.Locked = FalseDataGr

50、id1.Enabled = False add_flag = TrueCall showbuttonsEnd SubPrivate Sub cmdcancle_Click()If Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(lx) & ElseText1.Text = Text2.Text = End IfText1.Locked = TrueText2.Locked = TrueDataGrid1.Enabl

51、ed = Trueadd_flag = Falsemodify_flag = FalseCall showbuttonsEnd SubPrivate Sub cmddelete_Click()ret = MsgBox(你真的要删除+ Adodcl .Recordse tFields(lx) + 的类型吗?, vbYesNo + vbQuestion + vbDefaultButton2, 提示) If ret = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.UpdateEnd IfDataGrid1.SetFocusEnd SubPriv

52、ate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdmodify_Click()Text1.Locked = FalseText2.Locked = FalseDataGrid1.Enabled = Falsemodify_flag = TrueCall showbuttonsEnd SubPrivate Sub cmdsave_Click()Text1.Text = Trim(Text1.Text)Text2.Text = Trim(Text2.Text)If is_data_ok() = False ThenExit SubEnd I

53、fin_bh = Text1.Textin_lx = Text2.TextIf add_flag = True ThenAdodc1.Recordset.AddNewEnd IfAdodc1.Recordset.Fields(bh) = in_bhAdodc1.Recordset.Fields(lx) = in_lx Adodc1.Recordset.UpdateIf add_flag = True ThenAdodc1.Recordset.Find bh= + in_bh + , , adSearchForward,1 End IfText1.Locked = TrueText2.Locke

54、d = TrueDataGrid1.Enabled = True add_flag = False modify_flag = FalseCall showbuttonsDataGrid1.SetFocusEnd SubPrivate Sub Form_Load()Me.Show add_flag = False modify_flag = FalseCall showbuttonsDataGrid1.SetFocusEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)If add_flag

55、= True Or modify_flag = True ThenMsgBox (数据正在编辑,不能退出!)Cancel = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If (KeyAscii 57) And KeyAscii 8 ThenKeyAscii = 0End IfEnd SubPrivate Function is_data_ok() As BooleanIf modify_flag = True Thenold_bh = Adodc1.Recordset.Fields(bh)End IfIf L

56、en(Text1.Text) 4 ThenMsgBox (编号的长度不够!)is_data_ok = FalseText1.SetFocusExit FunctionEnd IfIf Len(Text2.Text) = 0 ThenMsgBox (类型名称未输入!)is_data_ok = FalseText2.SetFocusExit FunctionEnd IfIf add_flag = True ThenAdodc2.RecordSource = select * from kqlxb where bh= + Text1.Text + Adodc2.RefreshElseAdodc2.R

57、ecordSource = select * from kqlxb where bh= + Text1.Text + and bh + old_bh + Adodc2.RefreshEnd IfIf Adodc2.Recordset.RecordCount 0 ThenMsgBox (编号有重复!) is_data_ok = FalseText1.SetFocusExit FunctionEnd If is_data_ok = TrueEnd Function9.考勤信息统计窗口运行界面10.考勤信息统计窗口设计界面:冠考勤倩息统计区统计部门 lcboBMd考勤类型:|CcmbciLXjJ开始 口期 2010-11-30 二结耒口期:010-11-20 二部门姓名彗勤类型次数卜H4AdoLKkiH4AdoBMkiH4AdoGri dki统计打卬退出属性设置:1. Frm_kqlr的属性设置属性名值含义Caption考勤信息统计Borde

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!