以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义函数的参数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65428)

--  作者:affixed
--  发布时间:2015/3/16 11:19:00
--  自定义函数的参数问题
自定义函数中的参数不能直接接收与任何一个表格中字段名称相同的文本型数据吗? 我在实际操作中遇到了,自定义函数接受不到。
--  作者:Bin
--  发布时间:2015/3/16 11:19:00
--  
可以接收任何数据类型,任何数据.  你具体是怎么做的,出现什么问题
--  作者:affixed
--  发布时间:2015/3/16 11:31:00
--  
Dim mArgs,aArgs As String
Dim result As Boolean
Dim perdr As DataRow = DataTables("TB_Permissions").Find("[tb_Caption] = \'" & mArgs & "\' And [" & aArgs & "] like \'%" & Vars("userid") & "%\'")
If perdr IsNot Nothing Then
    result = True
Else
    result = False
End If
Return result

这是我的自定义函数,其中aArgs需要接收的是DataTables("TB_Permissions")中某一字段的名称。
在使用时将mArgs和aArgs传递给自定义函数。但调试中mArgs可以正常传递,因为其是一个不与任何字段名称冲突的文本型变量。但aArgs就有问题了。

提示出错:
---------------------------
错误
---------------------------
自定义函数"QX"执行出错,错误信息如下:



System.Data.SyntaxErrorException: 表达式包含无效名称:“[] like \'%12042%\'”。

   在 System.Data.ExpressionParser.ScanName(Char chEnd, Char esc, String charsToEscape)

   在 System.Data.ExpressionParser.Scan()

   在 System.Data.ExpressionParser.Parse()

   在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type)

   在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)

   在 System.Data.DataTable.Select(String filterExpression, String sort)

   在 Foxtable.DataTable.Find(String filterExpression, String Sort, Int32 Index)

   在 UserCode.AeQJR5u78jTuRcoAE(Object[] Args)
---------------------------
确定   
---------------------------



[此贴子已经被作者于2015/3/16 11:32:03编辑过]

--  作者:有点甜
--  发布时间:2015/3/16 11:34:00
--  

不论什么变量,都传递的。

 

接收的时候直接写

 

Dim a1 = args(0)

Dim a2 = args(1)

Dim a3 = args(2)