Access-培训管理系统-11-按钮代码设置之 录入(3)
2018-05-26 本文已影响0人
Data_Python_VBA
系统:Windows 7
软件:Excel 2010 / Access 2010
- 这个系列开展一个新的篇章,主体使用Access,包括数据库部分及界面部分,当然输出部分也会涉及到Excel,Excel的可读性还是比较好的
- 本公众号的不同阶段:Excel -> Excel + Access -> Access。但并不表示Access就一定比Excel好啊,各有所长吧,合适才是最好的
- 主体框架:换一种讲解方式,以项目为基础,从开始到结束
- 项目名称:培训管理系统
- 主要功能:两个界面。界面1,培训时录入信息;界面2,以培训老师和培训学员为客户,输出信息
- 涉及知识:Access界面,数据库知识,VBA,SQL,Excel
Part 1:本篇目标
- 接下来几篇分别介绍一下几个按钮的实现
- 今天说说录入按钮,点击该按钮,主体实现三个功能
- 检查信息是否填写完整
- 录入培训信息进数据库
- 禁用当前按钮,防止重复录入(也可以从数据库端控制)
- 今天继续上次课程的内容,开始学员信息的录入
程序架构
运行效果
数据库
3.png 4.png 5.pngPart 2:逻辑过程
- 每一次录入,会在数据库中两个表中增加信息,表1:02_培训课程;表2:03_培训记录
- 两个表中以培训课程ID相关联,要求数据类型必须完全一样,如下图
- 每一次培训在表1:02_培训课程中只会形成1条记录,在表2:03_培训记录中形成与学员数目相同的记录数,每个学员有一条记录
培训记录数据库结构
培训课程数据库结构
Part 3:代码
窗体内代码
只是在上一篇基础上增加一个调用
Call sMod_sr_07_信息录入(frmName, arr, listboxName)
模块内代码,与上一次对比,只是增加了:第2部分:录入人员信息
Sub sMod_sr_07_信息录入(frmName, arr, listboxName)
Rem>>录入课程及学员信息
Rem>>
Dim courseID
Dim frm
Dim d
Dim ctrl
Dim ctrlName
Dim filds
Dim fildsValue
courseID = fMod_01_获取课程ID
'第1部分:录入课程信息
Set frm = Forms(frmName)
Set d = CreateObject("Scripting.Dictionary")
For Each ctrlName In arr
Set ctrl = frm.Controls(ctrlName)
d(ctrlName) = ctrl.Value
Next
' 连接数据库
Dim dbAddr
Dim tblName
Dim SQL
Dim mode
Dim rsAdConn
Dim rs
Dim adConn
dbAddr = fMod_dz_01_数据库地址
tblName = "02_培训课程"
filds = "培训课程ID,培训课程名称,培训开始时间,培训多少小时,培训老师"
fildsValue = courseID & "," & Chr(39) & d("培训课程名称") & Chr(39) & "," _
& "#" & d("培训开始时间") & "#" & "," & d("培训多少小时") & "," _
& Chr(39) & d("培训老师") & Chr(39)
SQL = "Insert Into " & tblName & " (" & filds _
& ") VALUES(" & fildsValue & ")"
mode = 1
rsAdConn = fMod_tyk_01_rs产生(dbAddr, SQL, mode)
Set rs = rsAdConn(0) ' 注意:必须有set
Set adConn = rsAdConn(1)
'关闭数据库连接
adConn.Close
Set adConn = Nothing
'第2部分:录入人员信息
Dim ctrlListName
Dim ctrlList
Dim existsRow
Dim i
Dim student_name
Dim student_number
ctrlListName = "学员列表框"
Set ctrlList = frm.Controls(ctrlListName)
existsRow = ctrlList.ListCount
tblName = "03_培训记录"
For i = 1 To existsRow - 1 '第1行为标题行
'ListBox.Column(Index, Row),Index表示列信息,Row表示行信息,都是从0开始
student_name = ctrlList.Column(0, i) '行i从0开始
student_number = ctrlList.Column(1, i) '行i从0开始
SQL = "INSERT INTO " & tblName & " (培训课程ID,学员姓名,学号) VALUES(" _
& courseID & " , " & Chr(39) & student_name & Chr(39) & "," _
& Chr(39) & student_number & Chr(39) & ")"
mode = 1
rsAdConn = fMod_tyk_01_rs产生(dbAddr, SQL, mode)
Next i
Set adConn = rsAdConn(1)
'关闭数据库连接
adConn.Close
Set adConn = Nothing
End Sub
增加部分代码截图
Part 4:部分代码解读
-
student_name = ctrlList.Column(0, i)
,获取列表框内的信息 - 如果把列表框当做一张Excel工作表来看的话,
Column(列号, 行号)
,第一个参数是列号,第二参数是行号,和平常Excel中的Cells(行号,列号)
刚好相反 - 行号和列号都是从0开始
- 本文为原创作品,如需转载,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号