以文本方式查看主题 - 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 } |