系统:Windows 7
软件:Excel 2010 / Access 2010
- 这个系列开展一个新的篇章,主体使用Access,包括数据库部分及界面部分,当然输出部分也会涉及到Excel,Excel的可读性还是比较好的
- 本公众号的不同阶段:Excel -> Excel + Access -> Access。但并不表示Access就一定比Excel好啊,各有所长吧,合适才是最好的
- 主体框架:换一种讲解方式,以项目为基础,从开始到结束
- 项目名称:培训管理系统
- 主要功能:两个界面。界面1,培训时录入信息;界面2,以培训老师和培训学员为客户,输出信息
- 涉及知识:Access界面,数据库知识,VBA,SQL,Excel
Part 1:本篇目标
- 接下来几篇分别介绍一下几个按钮的实现
- 今天说说录入按钮,点击该按钮,主体实现三个功能
- 检查信息是否填写完整
- 录入培训信息进数据库
- 禁用当前按钮,防止重复录入(也可以从数据库端控制)
- 今天只讲第1部分:检查信息是否填写完整
程序架构
培训课程信息检查
动态过程
Part 2:代码
窗体内代码
Private Sub 录入_Click()
Dim arr
Dim listboxName
Dim frmName
frmName = fFrm_pxsr_01_当前窗体名称
arr = Array("培训课程名称", "培训开始时间", "培训多少小时", "培训老师")
listboxName = "学员列表框"
Call sMod_sr_06_录入信息检查(frmName, arr, listboxName)
MsgBox "信息填写完毕"
End Sub
代码截图
模块内代码分成两部分:组成框/文本框的检查采用通用函数检查;列表框单独检查
模块内代码
Sub sMod_sr_06_录入信息检查(frmName, arr, listboxName)
Rem>>
Rem>>
Dim check
Dim strAnswer
Dim frm
Dim ctrl
Dim existsRow
check = fMod_tyk_02_是否全部填写检查(frmName, arr)
If check = False Then
strAnswer = MsgBox("培训课程信息不全,请填写完整", vbCritical, "提示")
End
End If
Set frm = Forms(frmName)
Set ctrl = frm.Controls(listboxName)
existsRow = ctrl.ListCount
If existsRow < 2 Then
strAnswer = MsgBox("无培训参加人员信息,请填写", vbCritical)
End
End If
End Sub
代码截图
Function fMod_tyk_02_是否全部填写检查(frmName, arr)
Rem>>检查所有控件是否都填写了信息
Rem>>全部填写返回True,否则反馈False
Dim frm
Dim ctrlName
Dim ctrl
Dim ctrlValue
fMod_tyk_02_是否全部填写检查 = True
Set frm = Forms(frmName)
For Each ctrlName In arr
Set ctrl = frm.Controls(ctrlName)
ctrlValue = ctrl.Value
If ctrlValue = "" Or IsNull(ctrlValue) Then
fMod_tyk_02_是否全部填写检查 = False
End If
Next
End Function
Part 3:部分代码解读
existsRow = ctrl.ListCount
,获取列表框行,考虑到列标题,采用与2对比,判断是否有学员信息For Each ctrlName In arr
,对于数组也可以采用这种方法遍历
Part 4:用户窗体名称的获取
- 之前有读者问
frmName = fFrm_pxsr_01_当前窗体名称
这句话对应的函数是什么 - 把下面这段代码放在对应窗体中即可
Function fFrm_pxsr_01_当前窗体名称()
Rem>>获取当前窗体名称
Rem>>
fFrm_pxsr_01_当前窗体名称 = Me.Name
End Function
- 本文为原创作品,如需转载,可加小编微信号learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号