Office中国论坛/Access中国论坛

标题: 如何取消更新前事件的有效性规则提示 [打印本页]

作者: 老鬼    时间: 2009-9-28 17:58
标题: 如何取消更新前事件的有效性规则提示
在ACCESS窗体的文本框“更新前”事件中写了几句代码,实现功能:当不满足条件时,则cancel=true,打开另一个窗体。
结果当不满足条件时,ACCESS老是提示“字段或记录中的值违反了这个记录或字段中的有效性规则”。怎么才可以不让这个提示出现?
谢谢~
作者: aslxt    时间: 2009-9-28 18:48
应该是取消不成功才有这样的提示!?
作者: koutx    时间: 2009-9-28 18:53
本帖最后由 koutx 于 2009-9-28 18:54 编辑

Cancel=1

注意数据类型:
“BeforeUpdate(Cancel As Integer)”
作者: 老鬼    时间: 2009-9-29 08:26
我的代码如下:
Private Sub AslMatieralCode_BeforeUpdate(Cancel As Integer)
On Error Resume Next
nData = Me.AslMatieralCode
luv = DCount("*", "code", "是否取消=false and 存货编码='" & nData & "'")
    If luv = 0 Then
        Cancel = true
        DoCmd.OpenForm "mainCodeSel"
    End If
End Sub
经测试,CANCEL=TRUE和CANCEL=1的效果是一样的。
另外,我的数据表是SQL SERVER的链接表。
谁能帮一下?
作者: koutx    时间: 2009-9-29 09:58
本帖最后由 koutx 于 2009-9-29 10:57 编辑
我的代码如下:
.......

一、DCount("*", "code", "是否取消=false and 存货编码='" & nData & "'"),之中nData是字符型数据吗?
二、我用自己的表按以下试没问题:
If DCount("*", "biao", "单位='" & "人事部" & "'") > 0 Then
      DoCmd.OpenForm "窗体1"
else
     Cancel = false
End If
作者: 老鬼    时间: 2009-9-29 11:12
查清楚了,确定和链接表有关系。
是这样的:
我的一个输入窗体中建了一个数据源,这个数据源来自两张SQL SERVER链接表(A是主键表,B是外键表),两张表通过字段C(两张表的字段名都是这个)关联。然后我把B的C字段当成是输入窗体的输入框,结果当我在这个框中输入的数据与A表中字段C已有的数据不相符时,就会出现1楼的提示。
可是我用ACCESS自己的表来测试时,不会出现上面的问题。
现在我没别的方法,只能重新设计窗体了
作者: koutx    时间: 2009-9-29 12:15
捎带学习了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3