设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1166|回复: 5
打印 上一主题 下一主题

[窗体] 碰到个Bug大家教教我怎么破

[复制链接]
跳转到指定楼层
1#
发表于 2015-4-28 16:01:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lazybird 于 2015-4-28 17:04 编辑

窗体A - 显示所有订单数据列表,其中一字段为“订单状态”。
窗体B - 显示订单明细

双击窗体A中订单号字段打开窗体B,当订单状态为“Open”时,订单可修改,“Close”时不可修改,代码为:

Private Sub Form_Load()
  Select Case Me.Status
  Case "Open"
     Me.Form.AllowEdits = True
  Case "Close"
     Me.Form.AllowEdits = False
  End Select
End Sub

测试时,发现一个Bug,只要不关闭窗体B,返回窗体A打开另一个订单时并不会重新执行这段程序。
例如,先打开一个“Open”的订单,进入可以修改的状态,不关闭窗体B。接着从窗体A再打开一个“Close”的订单,则订单仍然是可修改的。

把这段代码加到别的事件,如 Form Open, Active, Current, 都没有用。

做了个例子发现上传不了(公司屏蔽了),麻烦各位老师帮看看。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2015-4-28 16:25:09 | 只看该作者
仔细看看代码就知道错在什么地方了。
3#
 楼主| 发表于 2015-4-28 17:04:13 | 只看该作者
Private Sub Form_Load()
   Select Case Me.Status
   Case "Open"
      Me.Form.AllowEdits = True
   Case "Close"
      Me.Form.AllowEdits = False   (笔误,不好意思,我实际代码是对的,这个不是原因)
   End Select
End Sub

4#
发表于 2015-4-28 17:25:02 | 只看该作者
本帖最后由 todaynew 于 2015-4-28 17:28 编辑
lazybird 发表于 2015-4-28 17:04
Private Sub Form_Load()
   Select Case Me.Status
   Case "Open"

在Select Case语句前,加Msgbox me.Status
在End select 语句后,加msgbox me.form.allowedits

此外代码可以简写为:
Me.Form.AllowEdits=me.Status.value="Open"

5#
 楼主| 发表于 2015-4-29 08:47:57 | 只看该作者
没有解决啊,原因是窗体B没有锁定为当前窗体,必须退出然后重新打开才能执行这段程序。
但我又不想锁定,因为有时要到别的窗体拷贝东西。
6#
发表于 2015-4-29 12:15:11 | 只看该作者
lazybird 发表于 2015-4-29 08:47
没有解决啊,原因是窗体B没有锁定为当前窗体,必须退出然后重新打开才能执行这段程序。
但我又不想锁定, ...

用激活或者获得焦点事件不就完事了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-9 21:36 , Processed in 0.098618 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表