Access交流中心

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

打开只读窗体,继续求解,附附件

王小宝  发表于:2012-09-03 22:13:54  
复制

打开3012窗体 ,双击任一记录,打开301,本为只读,却还是可编辑,用的语句如下:

Private Sub Form_Load()
Me.AllowEdits = False
Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.Section = acDetail And ((TypeOf ctl Is TextBox) Or (TypeOf ctl Is ComboBox) Or (TypeOf ctl Is ListBox) Or (TypeOf ctl Is CheckBox)) Then
        ctl.OnDblClick = "=open_form()"
    End If
Next
    Set ctl = Nothing
End Sub

Private Function open_form()
DoCmd.Close acForm, "301验资发文簿"
DoCmd.OpenForm "301验资发文簿", , , , acFormReadOnly, , OpenArgs:=[编号]

End Function

 

而301里,本身在form_load()中也设了,

   Me.AllowEdits = False
求解

 

Top
王小宝 发表于:2012-09-03 23:50:16
刚上传附件失败,现继续点击下载此附件

dbaseIIIer 发表于:2012-09-04 02:46:29

一般我都不下载 附件看问题的! 看你发了那么多个帖你都还没有解决,

而且看你的代码应该也是一个资深编程员,还是帮你看看了!

 

 

你的301窗体想怎么运作的呀?

设了记录源,可是里面全都没绑定字段的控件,<-浪费了记录源的资源

还用ADO连接,但是又不把窗体的 Recordset 设置为 ADO 的 Recordset <-浪费运行代码的资源

 

这种手法一般都是老 VB用家才用的!或者你跟错老师了,没办法!

 

 

原来真的以为你那么神奇,可以找出Access的漏洞来!

细心观察一下,运行过 ShowData 才会离奇地让窗体可以编辑的!

然后排查呗,终于看到你的一句 Me.chk_是否已结算 = rs!是否已结算,运行过后就能编辑的了!

 

真的那么神奇?一个控件的值能让窗体变成可编辑? .. 别傻了!

 

 

 

 

 

答案是:

Me.AllowEdits 是在查看状态下“禁止”进入修改状态的拦截,

可是你已经在修改状态了,Access 就拦截不了 这个“禁止”了!

 

你的窗体 有数据源,就是绑定了数据表,而你窗体那个控件 chk_是否已结算 也绑定了字段,

当你执行完这一句 Me.chk_是否已结算 = rs!是否已结算你的窗体已经正在更新数据记录了,

意思是你的数据正在更新状态中了,由于Access不能拦截更新状态下的继续更新,窗体就变成可编辑状态了!

 

 

 

老兄,你字段那么多,眼睛花了吧,漏掉了一个控件的数据源没删掉!

就是这个打钩控件 chk_是否已结算

 

 

自己的粗心大意,还弄得谜团阵阵,劳师动众帮你除错!好好反省下!

 

 

还有,那么多字段的画面,你就用绑定窗体,绑定控件吧!免得错了!

既然你都会用 OpenArgs 属性,你就应该懂得用 Docmd.OpenForm "xxx",,,, where 参数了!

 

你把 "[编号]=" & me!编号 放在where参数,你的301窗体根本就不用任何代码!

 

提示就这么多了!自己玩吧!解决不了就问老师!

 



心态哥 发表于:2012-09-04 09:18:19
路过,。

煮江品茶 发表于:2012-09-04 11:59:58
将窗体设为快照

麥田 发表于:2012-09-04 12:09:05
【Access源码示例】通过代码更改记录集类型\通过代码将子窗体由快照改为动态集的示例[Access软件网]
http://www.accessoft.com/article-show.asp?id=7137

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