也说双子窗体联动-李子
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


也说双子窗体联动

发表时间:2017/3/15 13:15:23 评论(0) 浏览(10480)  评论 | 加入收藏 | 复制
   
摘 要:也谈利用 selectrecord() 函数实现双子窗体联动的例子
正 文:

      笔者是新手,看到前面几位高手讲述的关于利用 selectrecord() 函数实现双子窗体联动的例子,很受启发。经过实践,笔者又将“半夜罗”的示例稍作优化,得到了更为简洁的联动方法。

      优化的方法是,取消了在主窗体创建过渡文本框(用于链接字段值的传递)的做法,将用于联动的VBA命令直接写在selectrecord() 函数中,当子窗体A的数据记录切换时,根据函数可以直接触发另一个子窗体B的数据集的动态刷新。

      下面给出selectrecord() 函数的写法:

    Function selectRecord()
        '1.整行变黑,方便查看是哪一条记录;
        '2.让某行的第一个字段获得焦点,从而触发焦点事件,来决定选择的是哪一条记录。
        On Error GoTo Err_selectRecord:
           '鼠标单击时选定整行记录
         DoCmd.RunCommand acCmdSelectRecord
           '根据子窗体A(frmChild_A)的表(表A)的字段值(字段A)刷新子窗体B(frmChild_B)上的数据 
          Forms!frmMain.frmChild_B.SourceObject = Forms!frmMain.frmChild_B.SourceObject
          Forms!frmMainl.frmChild_B.Form.Filter = "(表B.字段B) Like " _

               & " IIf(IsNull(Forms!frmMain.frmChild_A.Form.字段A),'',Forms!frmMain_bjgl.frmChild_A.Form.字段A)"
          Forms!frmMain_bjgl.frmChild_B.Form.FilterOn = True
        Exit_selectRecord:
       Exit Function
        Err_selectRecord:
        Resume Exit_selectRecord
     End Function

    这种做法的关键处有几点:

      1、在主窗体加载时,设置两个子窗体的记录源为表的全集查询(也可以在设计视图静态设置,但不如动态设置灵活)。

           如: Me.frmChild_B.Form.RecordSource = " select * FROM 表B"

      2、在selectrecord() 函数中要用FORMS.标明窗体和控件的完整引用关系(因为是程序中动态赋值的),而不能简化为ME.代替。

          如:  Forms!frmMain.frmChild_B.SourceObject

      3、要在子窗体A的“成为当前”事件中,输入 =selectRecord() ,以便记录切换时触发代码执行。

   以上小技巧仅供各位向笔者一样的初学者参考使用。不当之处请指正(其它未讲清楚的可以参考半夜罗”会员的“双子窗体联动.mdb”例子)。




Access软件网交流QQ群(群号:198465573)
 
 相关文章
双子窗体中双击A子窗体筛选B子窗体信息示例(MDE格式)  【十段  2008/10/22】
access双子窗体的数据联动,两个子窗体数据联动示例,二级子窗体...  【麥田  2012/8/2】
子窗体联动照片  【李专成  2013/1/9】
【Access示例】2个组合框分级联动  【漏蛧尐魚℡  2013/8/8】
双子窗体联动  【半夜罗  2015/5/7】
常见问答
技术分类
相关资源
文章搜索
关于作者

李子

文章分类

文章存档

友情链接