access开发教程第4章第3节
时 间:2008-11-10 10:29:14
作 者:Access软件网编著 ID:11 城市:上海 QQ:3002789054
摘 要:4.3 新增窗体的制作
正 文:
4.3 新增窗体的制作
由于我们需要进行精确的权限控制,因此,我们需要制作单独的新增窗体,而需要禁止掉数据显示窗体的数据新增功能,这样,才有利于用户权限的管理和保证数据的完整性。
禁止数据显示窗体的数据新增功能操作步骤如下:
切换到数据库窗口,之后打开 frmyg_child 窗体并切换到设计视图,打开窗体属性对话框,选择数据选项卡,之后将记录集类型由默认的动态集修改为快照,如下图所示:

禁止数据显示窗体的数据新增功能操作步骤如下:
切换到数据库窗口,之后打开 frmyg_child 窗体并切换到设计视图,打开窗体属性对话框,选择数据选项卡,之后将记录集类型由默认的动态集修改为快照,如下图所示:

关闭窗体属性,保存修改。此时,起先制作的数据显示窗体的数据新增、修改以及删除功能都已经被禁止掉。这些功能,我们将通过单独的工具栏按钮来实现,以便更好地实现权限的控制。
新增窗体制作的操作步骤如下:
关掉当前的窗体,回到数据库窗口,双击在设计视图中创建窗体,之后关闭工具箱的向导,即让工具箱的 按钮处于浮起的状态,默认是凹下的,即默认是激活的状态,我们这里不需要使用向导,把它取消即可(即处于浮起的状态)。之后点击工具箱的(文本框)控件,之后再设计界面适当的位置,单击鼠标左键,即会新建一个文本框,如下图所示:
新增窗体制作的操作步骤如下:
关掉当前的窗体,回到数据库窗口,双击在设计视图中创建窗体,之后关闭工具箱的向导,即让工具箱的 按钮处于浮起的状态,默认是凹下的,即默认是激活的状态,我们这里不需要使用向导,把它取消即可(即处于浮起的状态)。之后点击工具箱的(文本框)控件,之后再设计界面适当的位置,单击鼠标左键,即会新建一个文本框,如下图所示:

新建的文本框会默认携带一个标签控件,即左边的显示为 Text0: 的文字控件,单击选中该控件,之后单击鼠标右键激活右键快捷菜单,如下图所示:

如上图所示,选择属性 (P) ,则会弹出标签属性对话框,在标签属性对话框,选择格式选项卡,之后将标题属性由 Text4: 修改为员工姓名,之后关闭标签属性对话框,保存修改。之后再次选择该标签单击鼠标右键,选择大小 (S) 级联菜单的正好容纳 (F) 命令。之后选择文本框,同样单击鼠标右键,选择属性 (P) 命令,如下图所示:

在弹出的文本框对话框中,选择其他选项卡,修改名称属性为:ygxm ,这个名称,是在后台代码中唯一标识该文本框的名称。
之后按以下路径定位:视图 (V) →窗体页面/页脚 (A) ,单击窗体页面 / 页脚 (A) 菜单命令之后(注意切勿弄成了页面页眉 / 页脚),如下图所示:

之后按以下路径定位:视图 (V) →窗体页面/页脚 (A) ,单击窗体页面 / 页脚 (A) 菜单命令之后(注意切勿弄成了页面页眉 / 页脚),如下图所示:

将鼠标移动到窗体页脚底部,此时鼠标将会显示为上下双向箭头,按住鼠标向上拖动,将窗体页脚完全隐藏,如下图所示:

之后切换到数据库窗口,选中 ActiveX 窗体(此窗体将在 2007 年 3 月份以后的版本中新增,如果你的版本中没有此窗体,可以下载新版本,导入此窗体即可,下载地址: http://www.accessoft.com/down/ActiveX.rar),之后在设计视图打开该窗体,通过鼠标拖放的方式选中一区内的所有控件(也可以按住键盘 Ctrl 键,一个一个地点选),如下图所示:

同时按住键盘上的 Ctrl 键和 C 键将选中的控件复制到剪贴板,或者按以下路径定位:编辑 (E) →复制 (C) ,亦可将选中的控件复制到剪贴板,之后切换到刚才的正在编辑的窗体 1 ,单击窗体页面内的空白区域,之后执行编辑 (R) 下拉菜单的粘贴 (V) 命令,则可将刚才复制到剪贴板的内容粘贴到当前正在编辑窗体的窗体页眉中,如下图所示:


关闭 ActiveX 窗体,之后使用鼠标拖拽各个控件并利用格式下拉菜单内的各种命令(主要是对齐和大小级联菜单命令)的方式,调整一下窗体内控件的分布情况,调整完毕之后,如下图所示:

此时,单击右上角偏下的还原按钮
,注意,是该窗体的还原按钮,而非整个 Access 应用程序的还原按钮,即偏下的那一个,即
按钮,执行过还原命令按钮之后,如下图所示:



请注意一点,现在才是正在设计中的窗体 1 面向终端用户正常显示的真实大小,刚才那个是最大化显示,因为该窗体是新增窗体,必然会单独弹出来,因此,独立显示是存在的,出于美观的考虑,我们需要调整一下该窗口的的大小,同样,通过将鼠标移动到窗体边缘拖拽的方式调整窗体的大小,完成之后如下图所示:

调整完成之后,打开该窗体属性,选择格式选项卡(通过拖拽的方式可以拉长该属性窗口),分别执行以下属性修改:
标题:无默认值,输入以下字符:员工姓名新增;
滚动条:默认值为两者都有,修改为:两者均无;
记录选定器:默认为是,修改为:否;
导航按钮:默认为是,修改为:否;
分隔线:默认是为,修改为:否;
自动调整:默认为是,修改为:否;
自动居中:默认是否,修改为:是;
边框样式:默认为可调边框,修改为:对话框边框;
最大化最小化按钮:默认为两者都有,修改为:无。
之后再选择其他选项卡,分别执行以下属性修改:
弹出方式:默认为否,修改为:是;
模式:默认为否,修改为:是。
修改完毕之后,关闭窗体属性对话框保存修改。
有一个问题请读者注意一下,从开始到现在做了很多修改,却从来没有保存,这样的话,如果应用程序发生故障,那么,所有的工作都将丢失,因此,应该尽早保存,当然,这步操作可以尽早进行,并不是非要放在这一步进行。单击工具栏上的保存按钮,在弹出的另存为对话框中输入窗体名称: frmyg_child_Add ,之后单击确定按钮确认。这里需要说明一下新增窗体的命名规则,这是强制的,如果您违反了这个命名规则,那么您的新增功能一定有问题或者无法实现。新增窗体的命名规则:基本数据窗体的名称 + _Add 。由于此新增窗体是员工姓名数据窗体的新增窗体,而员工姓名数据窗体的命名是 frmyg_child ,因此,该新增的窗体的命名则必须是 frmyg_child_Add 。也就是说,当你的基础数据窗体的命名确定以后,新增窗体、修改窗体的命名则已经给定死了,绝对不能修改。而修改窗体的命名规则只是将 _Add 替换成 _Edit 而已。
保存窗体之后,按以下路径定位:视图 (V) ,代码 (C) ,执行代码 (C) 菜单命令之后,如下图所示:

标题:无默认值,输入以下字符:员工姓名新增;
滚动条:默认值为两者都有,修改为:两者均无;
记录选定器:默认为是,修改为:否;
导航按钮:默认为是,修改为:否;
分隔线:默认是为,修改为:否;
自动调整:默认为是,修改为:否;
自动居中:默认是否,修改为:是;
边框样式:默认为可调边框,修改为:对话框边框;
最大化最小化按钮:默认为两者都有,修改为:无。
之后再选择其他选项卡,分别执行以下属性修改:
弹出方式:默认为否,修改为:是;
模式:默认为否,修改为:是。
修改完毕之后,关闭窗体属性对话框保存修改。
有一个问题请读者注意一下,从开始到现在做了很多修改,却从来没有保存,这样的话,如果应用程序发生故障,那么,所有的工作都将丢失,因此,应该尽早保存,当然,这步操作可以尽早进行,并不是非要放在这一步进行。单击工具栏上的保存按钮,在弹出的另存为对话框中输入窗体名称: frmyg_child_Add ,之后单击确定按钮确认。这里需要说明一下新增窗体的命名规则,这是强制的,如果您违反了这个命名规则,那么您的新增功能一定有问题或者无法实现。新增窗体的命名规则:基本数据窗体的名称 + _Add 。由于此新增窗体是员工姓名数据窗体的新增窗体,而员工姓名数据窗体的命名是 frmyg_child ,因此,该新增的窗体的命名则必须是 frmyg_child_Add 。也就是说,当你的基础数据窗体的命名确定以后,新增窗体、修改窗体的命名则已经给定死了,绝对不能修改。而修改窗体的命名规则只是将 _Add 替换成 _Edit 而已。
保存窗体之后,按以下路径定位:视图 (V) ,代码 (C) ,执行代码 (C) 菜单命令之后,如下图所示:

这里,即进入了后台代码编写的界面,注意到当前的代码窗口是正是 frmyg_child_Add ,在该窗口中输入以下代码:
Private Sub ToolbarFrm_ButtonClick(ByVal Button As Object)
Select Case Button
Case "保存"
cmd_Save
Case "关闭"
DoCmd.Close
End Select
Case "保存"
cmd_Save
Case "关闭"
DoCmd.Close
End Select
End Sub
Private Sub cmd_Save()
Dim rst As DAO.Recordset
Dim rst As DAO.Recordset
If IsNull(Me.ygxm) Then
MsgBox "请输入员工姓名!", vbCritical, "提示:"
Me.ygxm.SetFocus
Exit Sub
End If
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 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
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
以上代码,如果您能看懂最好,如果你不能看懂,则将蓝色字符替换为你的场景对应的角色即可。所有的蓝色字符皆为个性化参数。这些名称要么是窗体名称、表名称、字段名称、控件名称或者提示文本,之前我们都已经见过了,因此,在这里就不多说了。如果初学者想了解这些代码的真实含义,可以去查阅 VBA 语言的相关教程。
确认修改无误后保存输入,并关闭代码页面。有一点请注意,虽然员工姓名参数表里有两个字段,但是我这里只添加了一个文本框对应于员工姓名字段,而并未曾添加另一个字段,这是因为另一个字段是系统编号的字段,其数据由数据添加时由代码自动生成的,不需要用户来干预,故可以不为其设置输入数据的文本框。这一点请注意。当然,你要想添加也不是不可以。不过,那种做法的处理比这种做法的处理要复杂的多,在这个场合,没有那个必要。在这个场合,负责自动生成序号是上面所书写代码中这样一行:
rst("ygId") = acchelp_autoid("Y",2, "tblCodeyg", "ygId")
稍后当正式的数据输入显示之后,大家可以对比一下,以便更好地了解这一行代码。
这样,我们就完成了新增窗体的制作,关闭当前的新增窗体(可以同样给窗体添加说明,比如,我们这里可以添加这样的字符说明:员工姓名_新增窗体),之后切换到控制面板界面,并将控制面板最大化显示。按以下路径定位:参数控制,员工姓名,点击员工姓名进入之后,发现工具栏上仍然只有隐藏和关闭两个按钮。这是因为导航按钮上并没有勾选该对象的新增复选框(功能)的原因。按以下路径定位:系统管理,导航按钮设置,进入导航按钮设置之后,再单击左边的基础资料导航窗格,如下图所示:

如上图所示,由于我们这里是为员工姓名添加新增的功能,因此,选择员工姓名相对应的序号为 1 的记录,之后再单击工具栏上的修改按钮,则如下图所示:

如上图所示:勾选新增复选框,之后关闭当前的页面,再次进入员工姓名页面,发现还是没有新增按钮,如同上一节一样,这是因为还没有赋予访问权限的原因。在本系统中,如果不直接赋予访问权限,管理员也是没有任何对象的访问权限的。但是在这里的赋予权限,可以比上一小节所讲到赋予访问权限可以更为直接一些。
按以下路径定位:系统管理,部门和组权限,之后双击管理员,展开管理员,选中管理员组,之后在右侧窗格中选择按钮名称为员工姓名的条目,如下图所示:

按以下路径定位:系统管理,部门和组权限,之后双击管理员,展开管理员,选中管理员组,之后在右侧窗格中选择按钮名称为员工姓名的条目,如下图所示:

之后再单击修改按钮,如下图所示:

如上图所示,读者比上一节权限设置区域已经新增加了一个新增复选框,这里的复选框的数目是与导航按钮那里的设置相对应的。勾选新增复选框,之后单击关闭按钮保存修改。
这时,关闭当前界面,再次进入居住城市的数据界面,则会发现,工具栏上多了一个新增复选框。如下图所示:

在这里,我们可以尝试输入一下记录,比如输入:张三,之后单击保存按钮保存录入(如果不单击保存按钮,则不会将数据录入数据库,单击关闭则是放弃新增数据),则会弹出确认对话框,确认输入,(不关闭的话,则可以继续输入),如下图所示:

如果你企图保存空数据的话,会有如下的错误提示:

如果你企图输入重复的记录的话,比如已经输入了张三,企图再次输入张三,则会如下图所示:

为什么这里一定要禁止重复值的录入呢?那是因为这里是选项列表,既然是选项列表,怎么会需要重复值呢?
请注意到表的字段设计,这里我根据需要,定义了该字段的长度是 20 ,也就是说,最多只允许输入 20 个字符,如果超过了这个限制,则会如下图所示:

请注意到表的字段设计,这里我根据需要,定义了该字段的长度是 20 ,也就是说,最多只允许输入 20 个字符,如果超过了这个限制,则会如下图所示:

此时,单击结束 (E) 按钮返回,修改输入的数据,重新保存即可。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- Inputbox输入密码打开查...(12.23)
- 【Access Dsum示例】...(12.16)
- Inputbox输入密码打开窗...(12.13)
- 【Access DCount示...(12.02)

学习心得
最新文章
- 用Access查询语句如何得到前3...(02.17)
- Access快速开发平台--导入导...(02.14)
- 按回车键后光标移动到下一条记录的V...(02.12)
- Access快速开发平台--要实现...(02.10)
- Access快速开发平台--让Pe...(02.08)
- 【Access Dsum示例】用D...(02.07)
- Access对子窗体的数据进行平均...(02.05)
- Access快速开发平台附件上传,...(01.18)
- 【IIF函数示例】用iif函数判断...(01.18)
- Access快速开发平台--如何获...(01.17)