access2010开发教程第4章第3节
时 间:2012-04-25 11:35:23
作 者:Access软件网编著 ID:8 城市:上海 QQ:2851379730
摘 要:4.3 新增窗体的制作
正 文:
4.3 新增窗体的制作
由于我们需要进行精确的权限控制,因此,我们需要制作单独的新增窗体,而需要禁止掉数据显示窗体的数据新增功能,这样,才有利于用户权限的管理和保证数据的完整性。禁止数据显示窗体的数据新增功能操作步骤如下:
切换到数据库窗口,之后打开 frmyg_child 窗体并切换到设计视图,打开窗体属性对话框,选择数据选项卡,之后将记录集类型由默认的动态集修改为快照,如下图所示:
关闭窗体属性,保存修改。此时,起先制作的数据显示窗体的数据新增、修改以及删除功能都已经被禁止掉。这些功能,我们将通过单独的工具栏按钮来实现,以便更好地实现权限的控制。
新增窗体制作的操作步骤如下:
关掉当前的窗体,在功能区上按以下的路径进行定位:创建→空白窗体,如下图所示:
设置完成后调整窗体的窗体页眉页脚以及主体的高度,调整后的效果如下所示:
格式选项页内属性修改为:
自动居中:是
边框样式:对话框边框
记录选择器:否
导航按钮:否
滚动条:两者都无
其他选项页内的属性修改为:
弹出方式:是
模式:是
按照上面修改完这些属性,新增窗体界面就基本设计完毕,进入窗体视图查看窗体效果如下图所示:
有一个问题请读者注意一下,从开始到现在做了很多修改,却从来没有保存,这样的话,如果应用程序发生故障,那么,所有的工作都将丢失,因此应该尽早保存,当然,这步操作可以尽早进行,并不是非要放在这一步进行。单击工具栏上的“保存”按钮,在弹出的另存为对话框中输入窗体名称“frmyg_child_Add”,之后单击“确定”按钮确认。这里需要说明一下新增窗体的命名规则,这是强制的,如果您违反了这个命名规则,那么您的新增功能一定有问题或者无法实现。新增窗体的命名规则:基本数据窗体的名称+“_Add”。由于此新增窗体是员工姓名数据窗体的新增窗体,而员工姓名数据窗体的命名是“frmyg_child”,因此,该新增的窗体的命名则必须是“frmyg_child_Add”。也就是说,当你的基础数据窗体的命名确定以后,新增窗体、修改窗体的命名则已经给定死了,绝对不能修改。而修改窗体的命名规则只是将“_Add”替换成“_Edit”而已。
保存窗体之后,单击代码按钮进入代码设计,代码按钮在功能区的:设计→工具中的右上角,可以按以下步骤来定位,参考下图:
执行“代码(C)” 命令之后就可以打开代码设计窗体了,如下图所示:
这里,即进入了后台代码编写的界面,注意到当前的代码窗口是正是 frmyg_child_Add ,在该窗口中输入以下代码:
Private Sub cmd_Save()
Dim rst As DAO.Recordset
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
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
End If
End Sub
以上代码是一个保存数据的过程,我们打开确定按钮的属性,在属性里面的事件里找到单击事件,单击该事件后面的按钮,在下拉列表中选择事件过程,然后按后面的按钮进入确定按钮的代码编写窗口,在里面调用上面定义的保存数据的过程,调用结束后完整的代码如下:
Private Sub cmdOK_Click()
cmd_Save
End Sub
同理,对取消按钮编写代码如下:
Private Sub cmdCancel_Click()
DoCmd.Close acForm, Me.Name
End Sub
以上代码,如果您能看懂最好,如果您不能看懂,则将蓝色字符替换为你的场景对应的角色即可。所有的蓝色字符皆为个性化参数。这些名称要么是窗体名称、表名称、字段名称、控件名称或者提示文本,之前我们都已经见过了,因此,在这里就不多说了。如果初学者想了解这些代码的真实含义,可以去查阅 VBA 语言的相关教程。
确认修改无误后保存输入,并关闭代码页面。有一点请注意,虽然员工姓名参数表里有两个字段,但是我这里只添加了一个文本框对应于员工姓名字段,而并未曾添加另一个字段,这是因为另一个字段是系统编号的字段,其数据由数据添加时由代码自动生成的,不需要用户来干预,故可以不为其设置输入数据的文本框。这一点请注意。当然,你要想添加也不是不可以。不过,那种做法的处理比这种做法的处理要复杂的多,在这个场合,没有那个必要。在这个场合,负责自动生成序号是上面所书写代码中这样一行:
rst("ygId") = acchelp_autoid("Y",2, "tblCodeyg", "ygId")
稍后当正式的数据输入显示之后,大家可以对比一下,以便更好地了解这一行代码。
这样,我们就完成了新增窗体的制作,关闭当前的新增窗体(可以同样给窗体添加说明,比如,我们这里可以添加这样的字符说明:员工姓名_新增窗体),之后切换到控制面板界面,并将控制面板最大化显示。按以下路径定位:报销管理→员工姓名,点击员工姓名进入之后,发现工具栏上仍然只有隐藏和关闭两个按钮。这是因为导航按钮上并没有勾选该对象的新增复选框(功能)的原因。按以下路径定位:系统管理→功能按钮设置,进入功能按钮设置之后,再单击左边的基础资料导航窗格,如下图所示:
如上图所示,由于我们这里是为员工姓名添加新增的功能,因此,选择员工姓名相对应的序号为 1 的记录,之后再单击工具栏上的修改按钮,则如下图所示:
如上图所示:勾选新增复选框,之后单击确定按钮关闭当前的页面,再次进入员工姓名页面,发现还是没有新增按钮,如同上一节一样,这是因为还没有赋予访问权限的原因。在本系统中,如果不直接赋予访问权限,管理员也是没有任何对象的访问权限的。但是在这里的赋予权限,可以比上一小节所讲到赋予访问权限可以更为直接一些。
按以下路径定位:系统管理→部门和组权限,之后双击管理员,展开管理员,选中管理员组,之后在右侧窗格中选择按钮名称为员工姓名的条目,如下图所示:
之后再单击修改按钮,如下图所示:
如上图所示,读者比上一节权限设置区域已经新增加了一个新增复选框,这里的复选框的数目是与导航按钮那里的设置相对应的。勾选新增复选框,之后单击确定按钮保存修改。
这时,关闭当前界面,再次进入员工信息的数据界面,则会发现,工具栏上多了一个新增复选框。如下图所示:
在这里,我们可以尝试输入一下记录,比如输入:张三,之后单击保存按钮保存录入(如果不单击保存按钮,则不会将数据录入数据库,单击取消则是放弃新增数据),则会弹出确认对话框,确认输入,(不关闭的话,则可以继续输入),如下图所示:
如果你企图保存空数据的话,会有如下的错误提示:
如果你企图输入重复的记录的话,比如已经输入了张三,企图再次输入张三,则会如下图所示:
为什么这里一定要禁止重复值的录入呢?那是因为这里是选项列表,既然是选项列表,怎么会需要重复值呢?
请注意到表的字段设计,这里我根据需要,定义了该字段的长度为20,也就是说,最多只允许输入20个字符,如果超过了这个限制,则会如下图所示:
此时,单击 结束 (E) 按钮返回,修改输入的数据,重新保存即可。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)