标题:模块内某个过程与窗体控件的数据调用问题。
只看楼主
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
结帖率:88.24%
已结贴  问题点数:20 回复次数:5 
模块内某个过程与窗体控件的数据调用问题。
窗体1.2都有一个combo1,combo2,在模块中做一个Public Function,或Public sub,模块中的过程根据其中一个窗体的的触发条件在模块中执行,然后反馈到控件中。
比如:加载窗体的时候,窗体1的combo1需要加载表1中一个字段下的所有不重复数据,过程在模块中,条件由窗体1中提供是combo1还是combo2.可以灵活变化。这个怎么弄,有没有先关例子,最好有注释的,学习一下。
搜索更多相关主题的帖子: 模块 过程 控件 窗体 数据 
2020-02-13 10:50
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
得分:0 
有大神解答一下吗?我在标准模块中写一个查询表格内容的过程,怎么把窗体中的条件发送到模块中,然后再把模块中查询到的结果发送回窗体中对应的控件中。
比如这样,把查询到的内容写到combo中,如果我想用这个过程在form2中的combo2中也用这个过程就需要改变这两个参数,但是这个过程放在模块中怎么弄的?参数怎么去改变?
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\e.accdb;Jet OLEDB:Database Password=1;"
    sql = "select 编号 from 信息 "
    rs.Open sql, cn, 3, 3
    If rs.Fields.Count > 0 Then
      
        For i = 0 To rs.Fields.Count - 1
            If rs.Fields(i).Name <> "ID" Then
                rs.Fields(i).Name
            End If
        Next
    End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close

学习--------------学习-------------------学习--------------------!!
2020-02-14 07:54
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
sub XX(cb as ComboBox)
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\e.accdb;Jet OLEDB:Database Password=1;"
    sql = "select 编号 from 信息 "
    rs.Open sql, cn, 3, 3
    If rs.Fields.Count > 0 Then
       cb .Clear
        For i = 0 To rs.Fields.Count - 1
            If rs.Fields(i).Name <> "ID" Then
                cb .AddItem rs.Fields(i).Name
            End If
        Next
    End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
end sub

调用
call xx()

call xx()

方案就是把这个控件以参数形式传进去。注意,如果写出参数传递形式,只能是按地址传递。



授人于鱼,不如授人于渔
早已停用QQ了
2020-02-14 09:01
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
得分:0 
回复 3楼 风吹过b
大哥!按这个做法,是否说很多参数都可以这样传递,
比如字段名,表名,查询条件,模块中可以这样做?
    sub XX(cb as ComboBox, 字段名 As Long, 表名 As Long,查询条件 As Long)
     Cb.Clear
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\e.accdb;Jet OLEDB:Database Password=1;"
    sql = "select 字段名 from 表名 "
    rs.Open sql, cn, 3, 3

然后窗体中可以这样

call xx(,字段名,表名,查询条件)

学习--------------学习-------------------学习--------------------!!
2020-02-14 11:20
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
可以的。


建议你继续深入学习,
然后查询条件生成再用一个子函数生成。这样可以生成复杂的查询条件。
需要学习的知识
1、子函数
2、参数类型,参数传递方式
3、可选参数
4、任意多个参数


授人于鱼,不如授人于渔
早已停用QQ了
2020-02-14 17:06
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:324
专家分:435
注 册:2012-1-29
得分:0 
回复 5楼 风吹过b
好的!谢谢!平时没有时间,就最近要隔离14天,所以又开始拿出来研究研究了

学习--------------学习-------------------学习--------------------!!
2020-02-15 08:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499211-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.106420 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved