Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-窗体/数据页

如何分阶段录入记录(自动调出没输完的记录并保存)

时 间:2009-05-14 12:07:15
作 者:Trynew   ID:2645  城市:广州
摘 要:1、如何判定表中是否存在指定条件的记录。可用在密码登陆、防止重复录入等方面。
2、如何取消当前记录的更新(用按钮向导可自动生成。)
3、如何转到指定条件的记录(用FindFirst方法)
4、如何操作、设置窗体中的所有控件(用窗体控件集合循环的方式)
5、如何设置窗体中部分字段不可修改
正 文:

有网友问道:如何分阶段录入一条记录,要求是在新记录中录入一个机器号,如果这个机器号已有一条记录,并且要求必须录入的字段不完整的,则转到这条记录继续录入,同时已经录入的字段不能修改;若没有这个机器号或这个机器号的上条记录已经录入完整,则继续在新增的这条记录中录入相关信息。
点击下载此附件

这个分两步处理:
1、如何判断这个机器号已有一条记录,并且要求录入的字段是否完整(通常也可以利用这个方法进行数据完整性和防止重复录入数据)。这个就在机器号文本框的更新后事件中进行判断处理,利用DLookup( )函数使用相关条件进行查找判断。若找到相关记录,则取消当前录入,并转到相应的记录,这个使用窗体数据集的FindFirst 方法。

2、转到相应记录时,保护以录入的数据。这个是在窗体的成为当前事件中进行处理。利用对窗体所有控件(控件集合)进行循环来判断处理。这里分别对控件的类型、控件的字段值、控件的标示(利用控件的标示属性Tag来标记区分有无数据都可以修改的字段,比如备注之类的)。对控件的锁定属性根据判定的结果进行设置就可以了,为了更好区别那些控件不允许修改,方便使用,最好对锁定的字段设置一下文本颜色。

 程序见下面的代码及附件。

Private Sub MC__机器号_AfterUpdate()
Dim MachNum As String
'查找指定的机器号和指定字段内容有空的记录,若存在则转到找到的记录中
MachNum = Nz(DLookup("[MC#/机器号]", "[Laser P]", "[MC#/机器号]='" & [MC__机器号] & "' And ([Part#/料号] Is Null or [Lot#/批号] Is Null or [Style/类型] Is Null or [Side/正/反面] Is Null or [Start date/开始日期] Is Null or [Start time/开始时间] Is Null or [In shfit/开始班次] Is Null or [Start Op#/开始员工号] Is Null or [Panel qty/板数] Is Null or [End date/结束日期] Is Null or [End time/结束时间] Is Null or [End Op#/结束员工号] Is Null)"))
If MachNum <> "" Then
    DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70    '取消当前录入
    Me.Recordset.FindFirst "[MC#/机器号]='" & MachNum & "' And ([Part#/料号] Is Null or [Lot#/批号] Is Null or [Style/类型] Is Null or [Side/正/反面] Is Null or [Start date/开始日期] Is Null or [Start time/开始时间] Is Null or [In shfit/开始班次] Is Null or [Start Op#/开始员工号] Is Null or [Panel qty/板数] Is Null or [End date/结束日期] Is Null or [End time/结束时间] Is Null or [End Op#/结束员工号] Is Null)"
End If
End Sub

Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.ControlType = acComboBox or ctl.ControlType = acTextBox Then
    '如果字段为空或字段标记(tag)为"*"则允许修改
        If IsNull(ctl) or ctl.Tag = "*" Then
            ctl.Locked = False
            ctl.ForeColor = -2147483640
        Else
            ctl.Locked = True
            ctl.ForeColor = 9868950
        End If
    End If
Next ctl
End Sub

 



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助