Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

还有个问题,关于 更新后 setfocus不好用的事情

Dale  发表于:2012-09-05 00:11:51  
复制

Private Sub 电话_1_AfterUpdate()

On Error GoTo err_电话_1_AfterUpdate

    Dim n As Integer
   
    n = DCount("客户ID", "查询 电话1")
       
    If n <> 0 Then
        MsgBox ("电话号码重复,请重新填写")
        Me.电话_1 = Null
        Me.电话_1.SetFocus                                             这句不太好用
        Exit Sub
    Else
        Exit Sub
    End If
   
    n = 0

exit_电话_1_AfterUpdate:
    Exit Sub
err_电话_1_AfterUpdate:
    MsgBox Err.Description
    Resume exit_电话_1_AfterUpdate

End Sub

 

按tab之后,进行更新后,如果电话号码充分用 setfocus设定的跳回到这个值,不过还是会和直接按tab一样跳到下个值。。。不知道是不是哪里写错了或者不该在此处用setfocus?先谢了

 

Top
金宇 发表于:2012-09-05 10:46:20
不好用,那你就把Me.电话_1.SetFocus这句先去掉试试呢

dbaseIIIer 发表于:2012-09-05 12:14:58

AfterUpdate 是更新后,要离开之前 触发的事件,

 

如果你在里面 叫 Access SetFocus 到另一个控件,Access 也不知道先做哪一个事情了!

即使你用了  Docmd.CancelEvent 也好,也确定不了是取消 AfterUpdate 还是,focus 的事件!

 

 

我建议还是用 BeforeUpdate 来处理吧,

任何更新如果不符合条件的,就用 Cancel=True 不允许更新,

焦点也就不会离开了!

 

用户如果没有更新过 直接用 Tab 游过的话,由于没有更新过,也不会触发 BeforeUpdate 事件的!



心态哥 发表于:2012-09-05 17:34:01

飘过



Dale 发表于:2012-09-07 22:35:23

谢谢大家回复~可能是我说的不太清楚,是这样的,这里是筛选输入的电话号码是否和数据库已有的重复的

 

这个部分叫“电话_1”,输入后,按 tab 运行afterupdate,通过读取查询“查询 电话1”得出值的个数来确认是否重复

 

如果重复,“电话_1”刚出入的变成null,并且光标回到“电话_1”不动,让操作者重新输入

 

如果不重复则像 tab 功能一下跳到下一个部分

 

我现在运行到“变成null”都成功了,就是不能跳回来重新输入,直接跳到下一个部分,先谢了大家了



总记录:4篇  页次:1/1 9 1 :