会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 窗体控件 > 正文

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

时间:2009-05-15 08:43 来源:网络 作者:Trynew 阅读:

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

这个分点击下载此附件两步处理:
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

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: