传统编辑方式
本节内容可以参考CaseStudy目录下的文件:传统编辑方式.Table
所以在讲述流程之前,我们有必要学习一下如何实现传统编辑方式。
本节要做一个下图所示的录入界面:
要求:
1、禁止直接在表中编辑数据,改用录入窗口形式编辑。
2、双击表中的任何一行,即可打开录入窗口编辑此行。
3、每次只能修改一条记录(也就是一行)。
4、在保存或者撤销此记录的修改之前,不能移到其他行,也不能关闭窗口。
5、单击"保存修改"按钮保存此次修改,单击"撤销修改"按钮,撤销此次修改,所有列返回修改前的值。
设计步骤:
1、设计好上图所示的窗口,窗口类型为模式窗口,这样在用户关闭此窗口之前不能进行任何操作。
2、将窗口的BeforeClose事件代码设置为:
If
Tables("员工").Current.DataRow.RowState <> DataRowState.Unchanged Then '如果当前行已经修改过上面的代码在关闭窗口前执行,如果用户已经修改当前记录(行),但未保存,将禁止关闭窗口,直到保存或撤销修改。
提示:行状态在修改前是Unchanged,修改后是Modified,保存修改或撤销修改后,又回到Unchanged。
3、窗口中各按钮的代码:
按钮 | 代码 |
上一条 |
With
Tables("员工") |
下一条 |
With
Tables("员工") |
第一条 |
With
Tables("员工") |
最末条 | With
Tables("员工") If .Current IsNot Nothing AndAlso .Current.DataRow.RowState = DataRowState.Unchanged Then '如果当前行未曾修改 .Position = .Rows.Count - 1 End If End With |
新增 |
With
Tables("员工") |
删除 |
With
Tables("员工") |
保存修改 |
With
Tables("员工") |
撤销修改 |
With
Tables("员工") |
从上面的代码可以看出,如果当前记录(行)已经修改但没有保存,窗口中的上一条、下一条、第一条、最末条、新增按钮将拒绝执行,直到保存或撤销修改。
4、将员工表的PrepareEdit事件代码设置为:
e.Cancel =
True这样就禁止了直接从表中修改数据。
5、将员工表的DoubleClick事件代码设置为:
Forms(
"编辑窗口").Open()这样双击某行,将自动打开编辑窗口编辑此行数据。