Foxtable(狐表)用户栏目专家坐堂 → [求助]


  共有1825人关注过本帖树形打印复制链接

主题:[求助]

帅哥哟,离线,有人找我吗?
9602084
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:3400 威望:0 精华:0 注册:2013/5/17 10:55:00
[求助]  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:3400 威望:0 精华:0 注册:2013/5/17 10:55:00
[求助]  发帖心情 Post By:2016/3/4 15:23:00 [只看该作者]

帮助文档里,关于自定义函数的内容太少了

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/4 15:23:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
9602084
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:3400 威望:0 精华:0 注册:2013/5/17 10:55:00
[求助]  发帖心情 Post By:2016/3/4 15:25:00 [只看该作者]

一个函数能同时返回两个值吗?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/4 15:29:00 [只看该作者]

返回数组

 

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

 

msgbox(str(0))

msgbox(str(1))

 


 回到顶部
帅哥哟,离线,有人找我吗?
9602084
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:341 积分:3400 威望:0 精华:0 注册:2013/5/17 10:55:00
[求助]  发帖心情 Post By:2016/3/4 15:56:00 [只看该作者]

大红袍老师,没弄明白,还得麻烦你一下:
自定义函数的任务是:
如果 输入的查询条件符合要求,则函数正常执行,返回两个值:1、查询字符串(字符型) ZhcxFilter; 2、函数执行标志(逻辑型)  Zxbz = true
如果输入的查询条件不符合要求,则 函数中止执行,返回一个值:函数执行标志(逻辑型)  Zxbz =false

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/4 15:58:00 [只看该作者]

都返回一个数组啊

 

return new string() {ZhcxFilter, Zxbz }


 回到顶部