Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 程序人生

我的access2007报销管理系统学习心得总结

时 间:2011-11-29 09:35:03
作 者:小李哥   ID:21947  城市:宜宾
摘 要:我的报销管理系统学习心得
正 文:

经过了一段时间的报销教程培训学习,收获很大,下面整理了一下平时的学习笔记,留作收藏,就像老师说的以后回头还能看看当时是怎么刻苦学习的,嘿嘿!!

我的版本是Access2007,下面就以2007版为例整理的学习笔记:

Access2007的系统设置工作
1、启用所有宏:Access选项-信任中心-信任中心设置-宏设置-启用所有宏
2、显示系统窗体:Access选项-当前数据库-导航选项-显示隐藏对象、显示系统对象
3、检查引用顺序:在任一窗体查看代码,工具-引用,使“OLE Automation”被选用并且处于从下到下第三个位置上

 
Access平台使用方法
1、 将AccDev2007.rar文件解压,并且将文件夹命名为需要的名称
2、 注册控件MSCOMCTL.OCX
3、在AccDev_be.accdb后台文件中建立需要的表,并以tbl为前缀命名
4、打开AccDev.accdb前台文件,将后台文件中的表链接
5、双击usysfrmLogin窗体,设置服务器参数
6、根据需要设置导航菜单

 
报销管理系统的设计

1、frmYg_Child窗体及新增、修改及功能设计

1、1建立frmYg_Child窗体
1、1、1 创建空白窗体
1、1、2 选择记录源
在显示表中选择tblCodeYg,双击*,选择所有字段,关闭。生成的SQL语句为:
SELECT tblCodeYg.* FROM tblCodeYg;
1、1、3 添加ygId和ygxm字段到窗体,修改标签名称
1、1、4 将窗体的默认视图设置为“数据表”,记录集类型设置为“快照”
1、1、5 将frmYg_Child窗体与Access开发平台菜单中的对象对应起来
1、1、6 创建一个模块variable,在其中定义三个全局变量selectStr、g_CurrentSelectStrID、strRptReSource
Public  selectStr  As  String
Public  g_CurrentSelectStrID  As  String
‘声明报表数据源的全局变量
Public  strRptReSource  As  String
1、1、7 在ygId文本框的“获得焦点”事件中给变量selectStr赋值
On Error Goto Err_ygId_gotFocus:
selectStr = Me.ygId
Forms!usysfrmMain!labFind.Tag=1
Forms!usysfrmMain!btnEdit.Tag=999
Exit_ygId_GotFocus:
Exit Sub
Err_ygId_GotFocus:
Resume Exit_ygId_GotFocus
1、1、8 在窗体的成为当前中输入=selectrecord()这个平台自定义的函数,使得点击某条记录的任何一个字段时,
整条记录都被选中,并且第一个字段ygId获得焦点,给变量selectStr赋值。
1、1、9 在窗体的计时器触发事件中写入平台的定位记录函数
Acchelp_FindstrRecord (g_CurrentSelectStrID)
Me.TimerInterval = 0 
1、1、10 在窗体中为删除按钮写入代码
Public Sub btnDel()
If MsgBox("你确认要删除吗?", vbYesNo + vbInformation, Forms!usysfrmLogin.Caption) = vbYes Then
DoCmd.Echo False
Call  Acchelp_DeleteFldStrRow(“tblCodeYg”,”ygId”,selectStr)
Forms!usysfrmMain!frmChild.SourceObject = “frmYg_Child”
DoCmd.Echo True
End  if
End  Sub
注意:Acchelp_DeleteFldStrRow函数是平台自定义删除记录的函数。

 
1、2 建立frmYg_Child_Add窗体
1、2、1 创建其他窗体,模式对话框
1、2、2 选择窗体页眉/页脚,套用格式,调整窗体大小
1、2、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消。
1、2、4 创建ygxm文本框,将标签设为“员工姓名”,名称属性设为ygxm
背景色设为 #FFF200,背景样式设为透明
1、2、5 在窗体的代码中定义cmd_Save( )函数
'声明私有函数cmd_Save( )
Private Sub cmd_Save()
'声明变量rst为DAO.Recordset
Dim rst As DAO.Recordset
'ygxm文本框为空时需要录入数据
If IsNull(Me.ygxm) Then
MsgBox "请输入员工姓名!", vbCritical, "提示"
Me.ygxm.SetFocus
Exit Sub
End If
Me.Refresh
'禁止录入重名的数据
If Acchelp_StrDataIsExist("tblCodeYg", "ygxm", Me.ygxm) = True Then
MsgBox "你输入员工姓名已存在,请重新输入!", vbCritical, "警告"
Me.ygxm.SetFocus
Exit Sub
End If
'用DAO代码将数据保存在tblCodeYg表中
If MsgBox("你确定要保存吗!", vbOKCancel + vbInformation, "提示") = vbOK Then
Set rst = CurrentDb.OpenRecordset("tblCodeYg", dbOpenDynaset)
rst.AddNew
rst("ygId") = Acchelp_autoid("Y", 2, "tblCodeYg", "ygId")
rst("ygxm") = Me.ygxm
rst.Update
rst.Close
Set rst = Nothing
'刷新数据
If IsLoaded("usysfrmMain") Then
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject = "frmYg_child"
DoCmd.Echo True
End If

MsgBox "保存成功!", vbInformation, "提示"
Me.ygxm = Null
Me.ygxm.SetFocus
End If
End Sub

如果报销明细新增窗体中增加按钮控件,可以快速新增员工姓名时用以下代码
If  IsLoaded (“usysfrmMain”) Then
If  Isloaded(“frmBxmx_Child_Add”) = True Then
Forms!frmBxmx_child_Add.ygId.Requery
GoTo 100
End  If
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmYg_child”
DoCmd.Echo True
End  If
100: MsgBox “保存成功!”, vbInformation, “提示”
Me.ygxm = Null
End  If
End  Sub
注意:本函数中使用了两个平台自定义的函数, Acchelp_StrDataIsExist和Acchelp_autoid。其作业和用法请参考相关内容。DAO代码实现保存的具体内容参考VBA基础课程“20一个表中保存数据_非绑定表”。

1、2、6 在窗体“确定”按钮的单击事件中使用cmd_Save( )函数
Cmd_Save
1、2、7 在窗体“取消”按钮的单击事件中关闭frmYg_Child_Add窗体
DoCmd.Close  acForm,  Me.Name
1、2、8 在窗体的加载事件中使ygxm文本框获得焦点
Me.ygxm.SetFocus

 
1、3 建立frmYg_Child_Edit窗体
1、3、1 创建其他窗体,模式对话框
1、3、2 选择窗体页眉/页脚,套用格式,调整窗体大小
1、3、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消
1、3、4在数据选项卡中将允许添加设为否,在窗体的加载事件中选择数据源为frmYg_Child窗体中选择的记录,
并且让ygxm文本框获得焦点
Me.RecordSource=”SELECT * FROM tblCodeYg WHERE ygId=’” & selectStr & “’”
g_CurrentSelectStrID = selectStr
Me.ygxm.SetFocus
1、3、4 创建ygxm文本框,将标签设为“员工姓名”,名称属性设为ygxm,在控件来源中输入ygxm。将背景
色设为 #FFF200,背景样式设为透明
1、3、5 在cmdCancel按钮的单击事件中撤消所做的操作并且关闭本窗体
Me.Undo
DoCmd.Close  acForm, Me.Name
1、3、6 在cmdOk按钮的单击事件中执行函数cmd_Save
在窗体的代码中定义cmd_Save( )函数
‘声明私有函数cmd_Save( )
Private Sub cmd_Save( )
 ‘ygxm文本框为空时需要录入数据
If IsNull(Me.ygxm) Or Len(Me.ygxm) = 0 Then
MsgBox “请输入员工姓名!”,vbCritical, ”提示”
Me.ygxm.SetFocus
Exit Sub
End If
 ‘禁止录入重名的数据
If  Acchelp_StrDataIsExist(“tblCodeYg”,”ygxm”,Me.ygxm) = True Then
MsgBox “你输入员工姓名已存在,请重新输入!”,vbCritical, ”警告”
Me.ygxm.SetFocus
Exit Sub
End  If
Me.Refresh
 ‘刷新数据
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmYg_child”
DoCmd.Echo True
‘触发子窗体计时器事件
Forms!usysfrmMain!frmChild.Form.TimerInterval = 300
‘关闭当前窗体
DoCmd.Close  acForm, Me.Name
End  Sub

 
2、frmBxlb_Child窗体及新增、修改及功能设计

2、1建立frmBxlb_Child窗体
2、1、1 创建空白窗体
2、1、2 选择记录源
在显示表中选择tblCodeBxlb,双击*,选择所有字段,关闭。生成的SQL语句为:
SELECT tblCodeBxlb.* FROM tblCodeBxlb;
2、1、3 添加lbId和lbmc字段到窗体,修改标签名称
2、1、4 将窗体的默认视图设置为“数据表”,记录集类型设置为“快照”
2、1、5 将frmBxlb_Child窗体与Access开发平台菜单中的对象对应起来
2、1、6 在lbId文本框的“获得焦点”事件中给变量selectStr赋值
On Error Goto Err_lbId_gotFocus:
selectStr = Me.lbId
Forms!usysfrmMain!labFind.Tag=1
Forms!usysfrmMain!btnEdit.Tag=999
Exit_lbId_GotFocus:
Exit Sub
Err_lbId_GotFocus:
Resume Exit_lbId_GotFocus
2、1、8 在窗体的成为当前事件中输入=selectrecord()这个平台自定义的函数,使得点击某条记录的任何一个字段
时,整条记录都被选中,并且第一个字段lbId获得焦点,给变量selectStr赋值。
2、1、9 在窗体的计时器触发事件中写入平台的定位记录函数
Acchelp_FindstrRecord (g_CurrentSelectStrID)
Me.TimerInterval = 0
2、1、10 在窗体中为删除按钮写入代码
Public Sub btnDel()
If  MsgBox(“你确认要删除吗?”,vbYesNo+vbInformation,Forms!usysfrmLogin.Caption)=vbYes  Then
DoCmd.Echo False
Call  Acchelp_DeleteFldStrRow(“tblCodeBxlb”,”lbId”,selectStr)
Forms!usysfrmMain!frmChild.SourceObject = “frmBxlb_Child”
DoCmd.Echo True
End  if
End  Sub
注意:Acchelp_DeleteFldStrRow函数是平台自定义删除记录的函数。

 
2、2 建立frmBxlb_Child_Add窗体
2、2、1 创建其他窗体,模式对话框
2、2、2 选择窗体页眉/页脚,套用格式,调整窗体大小
2、2、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消。
2、2、4 创建lbmc文本框,将标签设为“类别名称”,名称属性设为lbmc
背景色设为 #FFF200,背景样式设为透明
2、2、5 在窗体的代码中定义cmd_Save( )函数
‘声明私有函数cmd_Save( )
Private Sub cmd_Save( )
‘声明变量rst为DAO.Recordset
Dim rst As DAO.Recordset
‘lbmc文本框为空时需要录入数据
If  IsNull(Me.lbmc)  Then
MsgBox “请输入类别名称!”,vbCritical, ”提示”
Me.lbmc.SetFocus
Exit Sub
End  If
Me.Refresh
‘禁止录入重名的数据
If  Acchelp_StrDataIsExist(“tblCodeBxlb”,”lbmc”,Me.lbmc) = True Then
MsgBox “你输入类别名称已存在,请重新输入!”,vbCritical, ”警告”
Me.lbmc.SetFocus
Exit Sub
End  If
‘用DAO代码将数据保存在tblCodeBxlb表中
If  MsgBox (“你确定要保存吗!”,vbOkCancel + vbInformation, ”提示”) = vbOk Then
Set rst=CurrentDb.OpenRecordSet(“tblCodeBxlb”,dbOpenDynaset)
rst.AddNew
rst(“lbId”)=Acchelp_autoid(“L”,2,”tblCodeBxlb”,”lbId”)
rst(“lbmc”)=Me.lbmc
rst.Update
rst.Close
Set rst = Nothing
‘刷新数据
If  IsLoaded (“usysfrmMain”) Then
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmBxlb_child”
DoCmd.Echo True
End  If
MsgBox “保存成功!”, vbInformation, “提示”
Me.lbmc = Null
Me.lbmc.SetFocus
End  If
End  Sub

如果报销明细新增窗体中增加按钮控件,可以快速新增报销类别时用以下代码
If  IsLoaded (“usysfrmMain”) Then
If  Isloaded(“frmBxmx_Child_Add”) = True Then
Forms!frmBxmx_child_Add.lbId.Requery
GoTo 100
End  If
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmBxlb_child”
DoCmd.Echo True
End  If
100: MsgBox “保存成功!”, vbInformation, “提示”
Me.lbmc = Null
End  If
End  Sub

2、2、6 在窗体“确定”按钮的单击事件中使用cmd_Save( )函数
Cmd_Save
2、2、7 在窗体“取消”按钮的单击事件中关闭frmBxlb_Child_Add窗体
DoCmd.Close  acForm,  Me.Name
2、2、8 在窗体的加载事件中使lbmc文本框获得焦点
Me.lbmc.SetFocus

 
2、3 建立frmBxlb_Child_Edit窗体
2、3、1 创建其他窗体,模式对话框
2、3、2 选择窗体页眉/页脚,套用格式,调整窗体大小
2、3、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消
2、3、4在数据选项卡中将允许添加设为否,在窗体的加载事件中选择数据源为frmBxlb_Child窗体中选择的记
录,并且让lbmc文本框获得焦点
Me.RecordSource=”SELECT * FROM tblCodeBxlb WHERE lbId=’” & selectStr & “’”
g_CurrentSelectStrID = selectStr
Me.lbmc.SetFocus
2、3、4 创建lbmc文本框,将标签设为“类别名称”,名称属性设为lbmc,在控件来源中输入lbmc。将背景色
设为 #FFF200,背景样式设为透明
2、3、5 在cmdCancel按钮的单击事件中撤消所做的操作并且关闭本窗体
Me.Undo
DoCmd.Close  acForm, Me.Name
2、3、6 在cmdOk按钮的单击事件中执行函数cmd_Save
在窗体的代码中定义cmd_Save( )函数
‘声明私有函数cmd_Save( )
Private Sub cmd_Save( )
 ‘lbmc文本框为空时需要录入数据
If IsNull(Me.lbmc) Or Len(Me.lbmc) = 0 Then
MsgBox “请输入类别名称!”,vbCritical, ”提示”
Me. lbmc.SetFocus
Exit Sub
End If
 ‘禁止录入重复的数据
If  Acchelp_StrDataIsExist(“tblCodeBxlb”,” lbmc”,Me. lbmc) = True Then
MsgBox “你输入类别名称已存在,请重新输入!”,vbCritical, ”警告”
Me. lbmc.SetFocus
Exit Sub
End  If
Me.Refresh
 ‘刷新数据
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmBxlb_child”
DoCmd.Echo True
‘触发子窗体计时器事件
Forms!usysfrmMain!frmChild.Form.TimerInterval = 300
‘关闭当前窗体
DoCmd.Close  acForm, Me.Name
End  Sub

 
3、frmBxmx_Child窗体及新增、修改及功能设计

3、1建立qryBxmx查询
创建-查询设计,添加tblCodeYg、tblCodeBxlb、tblBxmx三个表,分别双击mxId、bxrq、lbmc、ygxm、bxje、bxzy。在字段行中为所有的字母字段添加中文标签:报销编号:、报销日期:、类别名称:、员工姓名:、报销金额:、报销摘要:

3、2 创建frmBxmx_Child窗体
3、2、1选中qryBxmx查询,创建-其他窗体-数据表,将记录集类型设为快照
3、2、2 在“报销编号”文本框的“获得焦点”事件中给变量selectStr赋值
On Error Goto Err_报销编号_gotFocus:
selectStr = Me.报销编号
Forms!usysfrmMain!labFind.Tag=1
Forms!usysfrmMain!btnEdit.Tag=999
Exit_报销编号_GotFocus:
Exit Sub
Err_报销编号_GotFocus:
Resume Exit_报销编号_GotFocus
3、2、3 在窗体的成为当前中输入=selectrecord()这个平台自定义的函数,使得点击某条记录的任何一个字段时,
整条记录都被选中,并且第一个字段“报销编号”获得焦点,给变量selectStr赋值。
3、2、4 在窗体的计时器触发事件中写入平台的定位记录函数
Acchelp_FindstrRecord (g_CurrentSelectStrID)
Me.TimerInterval = 0
3、2、5 在窗体中为删除按钮写入代码
Public Sub btnDel()
If  MsgBox(“你确认要删除吗?”,vbYesNo+vbInformation,Forms!usysfrmLogin.Caption)=vbYes  Then
DoCmd.Echo False
Call  Acchelp_DeleteFldStrRow(“tblBxmx”,”mxId”,selectStr)
Forms!usysfrmMain!frmChild.SourceObject = “frmBxmx_Child”
DoCmd.Echo True
End  if
End  Sub
3、2、6 在窗体中为查找按钮写入代码
Public  Sub  btnFind()
DoCmd.OpenForm  “usysfrmFind”
Forms!usysfrmFind!cobfldName.RowSourceType=”值列表”
‘文本型对应3,日期型对应1,数值型对应2
Forms!usysfrmFind!cobfldName.RowSource=”报销日期;1;类别名称;3;员工姓名;3;报销金额;2;报销摘要;3;”
‘指定查询数据来源
Forms!usysfrmFind!labDataSource.Caption=”qryBxmx”
End Sub
Public  Sub  FindEnd()
Forms!usysfrmMain!frmchild.Form.RecordSource=Acchelp_childFormRecordSource(“qryBxmx”,”报销编号”,true)
strRptReSource=Forms!usysfrmMain!frmChild.Form.RecordSource
End  Sub
3、2、7在窗体中为打印按钮写入代码
Public Sub btnPrint()
  DoCmd.OpenReport “RptBxmx”,acViewPreview
End Sub
 
3、3 创建frmBxmx_Child_Add窗体
3、3、1 创建其他窗体,模式对话框
3、3、2 选择窗体页眉/页脚,套用格式,调整窗体大小
3、3、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消
3、3、4 在窗体上建立五个文本框,修改标签为报销日期、报销类别、员工姓名、报销金额、报销摘要,修改
文本框的名称为brxq、lbid、ygid、bxje、bxzy。将bxrq格式设为短日期,bxje格式设为货币。为实现
光标的自动跳转功能,
在lbid组合框的获得焦点事件中写入Me.lbid.Dropdown
在lbid更新后事件中写入Me.ygId.SetFocus
在ygid组合框的获得焦点事件中写入Me.ygid.Dropdown
在ygid更新后事件中写入Me.bxje.SetFocus
在bxje更新后事件中写入Me.bxzy.SetFocus

3、3、5 在窗体的代码中定义cmd_Save( )函数
‘声明私有函数cmd_Save( )
Private Sub cmd_Save( )
‘声明变量rst为DAO.Recordset
Dim rst As DAO.Recordset
If  IsNull(Me.bxrq)  Then
MsgBox “请输入报销日期!”,vbCritical, ”提示”
Me.bxrq.SetFocus
Exit Sub
End  If
If  IsNull(Me.lbid)  Then
MsgBox “请输入报销类别!”,vbCritical, ”提示”
Me.lbid.SetFocus
Exit Sub
End  If
If  IsNull(Me.ygid)  Then
MsgBox “请输入员工姓名!”,vbCritical, ”提示”
Me.ygid.SetFocus
Exit Sub
End  If
If  IsNull(Me.bxje)  Then
MsgBox “请输入报销金额!”,vbCritical, ”提示”
Me.bxje.SetFocus
Exit Sub
End  If
Me.Refresh
 ‘用DAO代码将数据保存在tblBxmx表中
If  MsgBox (“你确定要保存吗!”,vbOkCancel + vbInformation, ”提示”) = vbOk Then
Set rst=CurrentDb.OpenRecordSet(“tblBxmx”,dbOpenDynaset)
rst.AddNew
rst(“mxId”)=Acchelp_autoid(“M”,10,”tblBxmx”,”mxId”)
rst(“bxrq”)=Me.bxrq
rst(“lbid”)=Me.lbid
rst(“ygid”)=Me.ygid
rst(“bxje”)=Me.bxje
rst(“bxzy”)=Me.bxzy
rst.Update
rst.Close
Set rst = Nothing
‘刷新数据
If  IsLoaded (“usysfrmMain”) Then
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmBxmx_child”
DoCmd.Echo True
End  If

MsgBox “保存成功!”, vbInformation, “提示”
Me.bxrq = Null
Me.lbid = Null
Me.ygid = Null
Me.bxje = Null
Me.bxzy = Null
Me.bxrq.SetFocus
End  If
End  Sub
3、3、6 在窗体“确定”按钮的单击事件中使用cmd_Save( )函数
Cmd_Save
3、3、7 在窗体“取消”按钮的单击事件中关闭frmBxmx_Child_Add窗体
DoCmd.Close  acForm,  Me.Name
3、3、8 在窗体的加载事件中使bxrq文本框获得焦点
Me.bxrq.SetFocus
3、3、9 使lbid文本框显示lbmc
选择lbid文本框,右键,更改为组合框,在数据属性中选择行来源,选择tblCodeBxlb表,双击*,关
闭,在行来源中生成的SQL代码如下:
SELECT tblCodeBxlb.* FROM tblCodeBxlb;
数据属性中绑定列1,格式属性中列数2,列宽0cm;2cm,列表行数20,列表宽度2cm
3、3、10 使ygid文本框显示ygxm
选择ygid文本框,右键,更改为组合框,在数据属性中选择行来源,选择tblCodeYg表,双击*,关闭,
在行来源中生成的SQL代码如下:
SELECT tblCodeYg.* FROM tblCodeYg;
数据属性中绑定列1,格式属性中列数2,列宽0cm;2cm,列表行数20,列表宽度2cm
3、3、11 必要时可在本窗体中增加两个按钮控件,用来在输入报销明细时快速增加员工姓名和报销类别。
将报销类别、员工姓名两个组合框缩短,并各在其后增加一个按钮控件,命名为cmdBx、cmdYg,在
其单击事件中分别写入代码
DoCmd.OpenForm “frmBxlb_Child_Add”,,,,, acDialog
DoCmd.OpenForm “frmYg_Child_Add”,,,,, acDialog
注意:窗体frmBxlb_Child_Add和frmYg_Child_Add中的代码要进行相应改动)
 
3、4 创建frmBxmx_Child_Edit窗体
3、4、1 创建其他窗体,模式对话框
3、4、2 选择窗体页眉/页脚,套用格式,调整窗体大小
3、4、3 将“确定”、“取消”两个按钮删除,复制两个本系统风格的按钮
将cmdOK按钮设为默认,cmdCancel按钮设为取消
3、4、4 在窗体上建立五个文本框,修改标签为报销日期、报销类别、员工姓名、报销金额、报销摘要,修改
文本框的名称为brxq、lbid、ygid、bxje、bxzy。将bxrq格式设为短日期,bxje格式设为货币
3、4、5 修改各文本框的控件来源,依次为bxrq、lbid、ygid、bxje、bxzy
3、4、6 使lbid文本框显示lbmc
选择lbid文本框,右键,更改为组合框,在数据属性中选择行来源,选择tblCodeBxlb表,双击*,
关闭,在行来源中生成的SQL代码如下:
SELECT  tblCodeBxlb.*  FROM  tblCodeBxlb;
数据属性中绑定列1,格式属性中列数2,列宽0cm;2cm,列表行数20,列表宽度2cm
3、4、7 使ygid文本框显示ygxm
选择ygid文本框,右键,更改为组合框,在数据属性中选择行来源,选择tblCodeYg表,双击*,关闭,
在行来源中生成的SQL代码如下:
SELECT  tblCodeYg.*  FROM  tblCodeYg;
数据属性中绑定列1,格式属性中列数2,列宽0cm;2cm,列表行数20,列表宽度2cm
3.4.8 在数据选项卡中将允许添加设为否,在窗体的加载事件中选择数据源为frmBxmx_Child窗体中选择
的记录
Me.RecordSource=”SELECT * FROM tblBxmx WHERE mxId=’” & selectStr & “’”
g_CurrentSelectStrID = selectStr
3、4、9 在cmdCancel按钮的单击事件中撤消所做的操作并且关闭本窗体
Me.Undo
DoCmd.Close  acForm, Me.Name
3、4、10 在cmdOk按钮的单击事件中执行函数cmd_Save
在窗体的代码中定义cmd_Save( )函数
Private Sub cmd_Save( )
If  IsNull(Me.bxrq) or Len(Me.bxrq) = 0 Then
MsgBox “请输入报销日期!”,vbCritical, ”提示”
Me.bxrq.SetFocus
Exit Sub
End  If
If  IsNull(Me.lbid) or Len(Me.lbid) = 0 Then
MsgBox “请输入报销类别!”,vbCritical, ”提示”
Me.lbid.SetFocus
Exit Sub
End  If
If  IsNull(Me.ygid) or Len(Me.ygid) = 0 Then
MsgBox “请输入员工姓名!”,vbCritical, ”提示”
Me.ygid.SetFocus
Exit Sub
End  If
If  IsNull(Me.bxje) or Len(Me.bxje) = 0 Then
MsgBox “请输入报销金额!”,vbCritical, ”提示”
Me.bxje.SetFocus
Exit Sub
End  If
Me.Refresh
 ‘刷新数据
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject=”frmBxmx_child”
DoCmd.Echo True
 ‘触发子窗体计时器事件
Forms!usysfrmMain!frmChild.Form.TimerInterval = 300
‘关闭当前窗体
DoCmd.Close  acForm, Me.Name
End  Sub

 
4、 、  报表制作

4、1 静态报表
4、1、1 创建,报表向导,选择QryBxmx查询,选择“类别名称”和“报销金额”字段,双击“类别名称”进
行分组,下一步,在1列表框中选择“报销金额”,汇总选项,选中报销金额的汇总复选框,在显示中
选择“仅汇总”,选中“计算汇总百分比”,确定,下一步直到完成。
4、1、2切换到设计视图,将标签“QryBxmx”修改为“按报销类别统计报表”,将报表名称改为RptBxmx。
确认frmBxmx_Child中为打印按钮写好了代码
Public Sub btnPrint()
  DoCmd.OpenReport “RptBxmx”,acViewPreview
End Sub

4、2 动态报表
4、2、1 确认在模块variable中加入了声明报表数据源的全局变量
Public  strRptReSource  As  String
4、2、2 确认frmBxmx_Child窗体的FindEnd()代码中有记录报表数据来源的代码
strRptReSource=Forms!usysfrmMain!frmChild.Form.RecordSource
4、2、3 在RptBxmx的打开事件中写入代码
‘赋上查找后的报表数据源
If strRptReSource=”” Then
Me.RecordSource=Forms!usysfrmMain!frmChild.Form.RecordSource
Else
Me.RecordSource= strRptReSource
End If

 
4、3 动态报表切换面板的制作
4、3、1 创建,报表向导,选择QryBxmx查询,选择“员工姓名”和“报销金额”字段,双击“员工姓名”进
行分组,下一步,在1列表框中选择“报销金额”,汇总选项,选中报销金额的汇总复选框,在显示中
选择“仅汇总”,选中“计算汇总百分比”,确定,下一步直到完成。
4、3、2切换到设计视图,将标签“QryBxmx”修改为“按员工姓名统计报表”,将报表名称改为RptBxmx_Yg。
4、3、3 在RptBxmx_Yg的打开事件中写入代码
‘赋上查找后的报表数据源
If strRptReSource=”” Then
Me.RecordSource=Forms!usysfrmMain!frmChild.Form.RecordSource
Else
Me.RecordSource= strRptReSource
End If
4、3、4将frmBxmx_Child中为打印按钮书写的打开报表的代码修改为打开选择报表的窗体代码
将  DoCmd.OpenReport “RptBxmx”,acViewPreview
改为  DoCmd.OpenForm “frmBxmx_Child_rpt”
4、3、5 新建一个空白窗体,命名为frmBxmx_Child_rpt,将标题设为:请选择您需要浏览的报表
滚动条、记录选择器、导航按钮、分割线、控制框、最大最小化按钮、关闭按钮设为否
自动调整、适应屏幕、自动居中设为是,对框样式为对话框边框
其他中,弹出方式为是,模式为否
4、3、6 在窗体中添加一个选项组,删除其上的标签,在组中放置两个单选按钮,标签分别设为“按报销类别
统计报表浏览”、“按员工姓名统计报表浏览”。将选项组名称设为Select_rpt。在单选按钮的数据选项
卡中将选项值分别改为7、8
4、3、7 设置窗体页眉/页脚,选用格式,复制“确定”、“取消”按钮。

确认“取消”按钮的名称是cmdCancel,在单击事件中写入代码
DoCmd.Close acForm,Me.Name

确认“确定”按钮的名称是cmdOk,在单击事件中写入代码
Select Case Me.select_rpt
Case 7
DoCmd.OpenReport “rptBxmx”,acViewPreview
Case 8
DoCmd.OpenReport “rptBxmx_Yg”,acViewPreview
End select
DoCmd.Close acForm,Me.Name



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助