以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81732)

--  作者:9602084
--  发布时间:2016/3/4 15:19:00
--  [求助]
自定义函数问题请教
函数调用代码:
Dim ZhcxFilter  As String = SysFilter
Dim dt As Table = Tables("基本信息")
Dim dr As Row
Dim d As Date
Dim Zxbz As Boolean
Functions.Execute("自动生成综合查询条件",ZhcxFilter,dt,dr,d,Zxbz)
if Zxbz =true then
tables().filter = ZhcxFilter
end if


函数代码:
Dim ZhcxFilter As String = args(0)
Dim dt As Table = args(1)
Dim dr As Row = args(2)
Dim d As Date = args(3)
Dim Zxbz As Boolean = args(4)

For i As Integer = 0 To Tables("查询条件明细").count-1
    dr= Tables("查询条件明细").Rows(i)
    If i = 0 Then
        If dt.Cols(dr("查询字段")).IsDate Then
            If Date.TryParse(dr("条件值"), d) Then
                ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                           Else
                MessageBox.show("HI," & iif(_usersex="男","师哥:","美女:") & vbcrlf & "日期不合法,我只能认出\'yyyy-mm-dd\'格式的日期,请重新核对!")
                Zxbz = False
                Return Zxbz
            End If
        ElseIf dt.Cols(dr("查询字段")).IsNumeric Then
            ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " " &  dr("条件值")
                   Else
            If dr("运算符") ="like" Then
                ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'%" &  dr("条件值") & "%\'"
                            Else
                ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                           End If
        End If
    Else
        If dr("关系符") = "and" Then
            If dt.Cols(dr("查询字段")).IsDate Then
                If Date.TryParse(dr("条件值"), d) Then
                    ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                                   Else
                    MessageBox.show("日期不合法,请重新核对!")
                    Zxbz = False
                    Return Zxbz
                End If
            ElseIf dt.Cols(dr("查询字段")).IsNumeric Then
                ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " " &  dr("条件值")
                          Else
                If dr("运算符") ="like" Then
                    ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'%" &  dr("条件值") & "%\'"
                                   Else
                    ZhcxFilter = ZhcxFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                    
                End If
            End If
        Else
            If dt.Cols(dr("查询字段")).IsDate Then
                If Date.TryParse(dr("条件值"), d) Then
                    ZhcxFilter = ZhcxFilter & " or " & SysFilter & " And " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                   
                Else
                    MessageBox.show("日期不合法,请重新核对!")
                    Zxbz = False
                    Return Zxbz
                End If
            ElseIf dt.Cols(dr("查询字段")).IsNumeric Then
                ZhcxFilter = ZhcxFilter & " or " & SysFilter & " and " & dr("查询字段") & " " & dr("运算符") & " " &  dr("条件值")
                           Else
                If dr("运算符") ="like" Then
                    ZhcxFilter = ZhcxFilter & " or " & SysFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'%" &  dr("条件值") & "%\'"
                   
                Else
                    ZhcxFilter = ZhcxFilter & " or " & SysFilter & " and " & dr("查询字段") & " " & dr("运算符") & " \'" &  dr("条件值") & "\'"
                                    End If
            End If
        End If
    End If
Next


Return ZhcxFilter

目标:
1、想让函数返回生成的筛选字符串: ZhcxFilter ,返回函数执行标志:Zxbz

2、如何引用函数返回的值。
3、如何让函数根据条件中止运行

[此贴子已经被作者于2016/3/4 15:21:39编辑过]

--  作者:9602084
--  发布时间:2016/3/4 15:23:00
--  [求助]
帮助文档里,关于自定义函数的内容太少了
--  作者:大红袍
--  发布时间:2016/3/4 15:23:00
--  
dim str As string = Functions.Execute("自动生成综合查询条件",ZhcxFilter,dt,dr,d,Zxbz)
--  作者:9602084
--  发布时间:2016/3/4 15:25:00
--  [求助]
一个函数能同时返回两个值吗?
--  作者:大红袍
--  发布时间:2016/3/4 15:29:00
--  

返回数组

 

dim str() As string = Functions.Execute("自动生成综合查询条件",ZhcxFilter,dt,dr,d,Zxbz)

 

msgbox(str(0))

msgbox(str(1))

 


--  作者:9602084
--  发布时间:2016/3/4 15:56:00
--  [求助]
大红袍老师,没弄明白,还得麻烦你一下:
自定义函数的任务是:
如果 输入的查询条件符合要求,则函数正常执行,返回两个值:1、查询字符串(字符型) ZhcxFilter; 2、函数执行标志(逻辑型)  Zxbz = true
如果输入的查询条件不符合要求,则 函数中止执行,返回一个值:函数执行标志(逻辑型)  Zxbz =false

函数引用,如果Zxbz = true 则 执行查询 否则不执行。

请教:一楼函数该怎么修改,函数引用代码该怎么写。谢谢

--  作者:大红袍
--  发布时间:2016/3/4 15:58:00
--  

都返回一个数组啊

 

return new string() {ZhcxFilter, Zxbz }