Office中国论坛/Access中国论坛

标题: 【Access小品】黑箱---程序开发的一种机巧思路 [打印本页]

作者: todaynew    时间: 2010-7-11 09:34
标题: 【Access小品】黑箱---程序开发的一种机巧思路
本帖最后由 todaynew 于 2010-7-11 09:36 编辑

  昨日,版友子煜同志上传了一个关于追加查询问题的实例,读出数据和写入数据的两个表字段多,字段名复杂,加之还存在一些逻辑上的矛盾。因此直接写追加查询很是麻烦,用ADO数据集解决也很罗嗦。于是乎,需要另辟蹊径,超常规解决问题。通过观察发现,所需追加的来源和被追加的目标在窗体上反映的是很清晰的,这就提供了一个解决问题的基本思路,叫做“从窗体中来到窗体中去”,窗体背后是些什么玩意完全可以不必考虑。这也就是一种被称之为黑箱管理的思维方法。实际上Access设计中,常常需要这样去建立解决问题的思路,这个思路可以导致许多通用程序的构建。

Private Sub Command4_Click()
Dim frm1 As Form
Dim ctls1 As Controls
Dim ctl1 As Control
Dim frm2 As Form
Dim ctls2 As Controls
Dim i As Long, j As Long
Set frm1 = Me.条件查询入库明细子窗体.Form
Set ctls1 = frm1.Controls
Set frm2 = Forms("出库主窗体").Controls("F_ProIn2").Form
Set ctls2 = frm2.Controls
For i = 1 To frm1.RecordsetClone.RecordCount
           frm1.SelTop = i
           If ctls1("P_Select") = True Then
                Forms("出库主窗体").Form.SetFocus
                Forms("出库主窗体").Controls("F_ProIn2").SetFocus
                If Nz(ctls2("P_ID").Value, 0) <> 0 Then
                       DoCmd.RunCommand acCmdRecordsGoToNew
                End If
                For Each ctl1 In ctls1
                       If ctl1.ControlType <> acLabel Then
                              If ctlEx(frm2, ctl1.Name) = True Then
                                     ctls2(ctl1.Name).Value = ctl1.Value
                              End If
                       End If
                  Next ctl1
           End If
Next
frm1.Requery
frm2.Requery
End Sub

Function ctlEx(frm As Form, ctlname As String) As Boolean
Dim ctls As Controls
Dim ctl As Control
Set ctls = frm.Controls
ctlEx = False
For Each ctl In ctls
       If ctl.Name = ctlname Then
            ctlEx = True
            Exit For
       End If
Next ctl
End Function

[attach]42629[/attach]



作者: tmtony    时间: 2010-7-11 09:48
高产专家
作者: t小宝    时间: 2010-7-11 11:17
不错,黑箱 确实是很好的方法。
作者: xuwenning    时间: 2010-7-13 08:37
谢谢分享
学习学习
作者: amocvv    时间: 2010-7-13 12:34
一段时间没来,论坛就改版了。。todaynew 又新作··正好学习学习
作者: c101    时间: 2010-7-13 14:23
谢谢分享

作者: michael100    时间: 2010-7-13 15:16
谢谢分享
作者: Lightsome    时间: 2010-7-15 22:32
谢谢分享~~~~~~~
作者: li08hua    时间: 2010-7-21 02:27
学习
作者: todaynew    时间: 2010-7-21 08:56
谢谢领导和同志们的支持与鼓励
作者: 5988143    时间: 2010-7-21 09:10
谢谢分享

作者: loginwjd303    时间: 2010-8-15 01:35
谢谢分享~~~~~~~

作者: newbuswalker    时间: 2010-8-17 23:57
hehe,高人……顶一下!
作者: lovehere    时间: 2010-8-18 08:42
这个一定要顶,学习了
作者: chenry2010    时间: 2010-8-19 22:37
谢谢分享 学习学习
作者: ZHENGLIAN    时间: 2010-8-22 09:10
谢谢分享~~~~~~~

作者: szyewj    时间: 2010-8-22 13:03
不错,黑箱 确实是很好的方法
作者: wwsheng    时间: 2010-8-24 11:13
谢谢分享
学习学习
作者: fnsmydyang    时间: 2010-9-11 23:29
好好学习一下2010精品作品,学习了
作者: maymay_1211    时间: 2010-10-5 16:56
不知道是啥。。。照收。。。。
作者: wangru    时间: 2011-3-12 22:39
谢了啊1
作者: huxinhua    时间: 2012-1-10 14:41
谢谢分享
学习学习
作者: userliujun    时间: 2012-6-1 19:19

收藏学习了
作者: 惠禧服饰    时间: 2013-9-10 01:05
偶不淡定了。这么牛叉
作者: nncchh    时间: 2015-5-25 20:35
谢谢分享
作者: lintina892    时间: 2015-7-14 16:23
很好的思路,原来我也是一直为筛选条件烦恼
作者: a157838566    时间: 2015-7-28 14:56
adfasdfas
作者: hunrybecky    时间: 2015-7-28 21:35
这种方法的却有时会用到,而且很好用。
作者: pyh512    时间: 2016-6-6 17:09
我正在录找,在这里找到了,谢谢分享!
作者: changxing    时间: 2016-6-6 17:40
谢谢分享 学习学习
作者: 李力军2    时间: 2016-7-29 10:12
不错,黑箱 确实是很好的方法




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