以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于窗口调用重复代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179037)

--  作者:lgj716330
--  发布时间:2022/8/4 9:29:00
--  [求助]关于窗口调用重复代码
窗口按钮做了个筛选条件

Dim Filter As String = "1=1"

With e.Form.Controls("NF") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "年份 = \'" & .value & "\'"
    End If
End With
With e.Form.Controls("YF1") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "月份 >= \'" & .value & "\'"
    End If
End With
With e.Form.Controls("YF2") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "月份 <= \'" & .value & "\'"
    End If
End With

然后在另一个按钮代码中引用,发现条件没起作用,是在同一个窗口中。不能这样操作吗

e.Form.Controls("gtcxtj").PerformClick() \'工资汇总分析

Dim bd1 As New SQLGroupTableBuilder("出勤率基础表", "出勤率")
bd1.C
bd1.Groups.AddDef("年份") 
bd1.Groups.AddDef("月份")
bd1.Groups.AddDef("组别")
bd1.Totals.AddDef("小组人数")
bd1.Filter = "(" & filter & ")" 
bd1.Build
[此贴子已经被作者于2022/8/4 9:29:41编辑过]

--  作者:有点蓝
--  发布时间:2022/8/4 9:51:00
--  
在按钮事件里定义的变量只能在这个事件里使用。考虑使用全局变量

按钮1
……
With e.Form.Controls("YF2") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "月份 <= \'" & .value & "\'"
    End If
End With
vars("Filter") = Filter 

按钮2
……
bd1.Filter = vars("Filter")