不说业务逻辑,In运算符的语法:
In 运算符用来判断某一个值是否在指定的一系列值中,例如:
[国籍] In ('中国','美国','英国','法国','俄罗斯')
表示判断国籍是否是上述五国之一,显然这比用OR来连接多个表达式要简洁很多。
记得数值型的列,值不要用单引号括起来,例如:
[订单号] In (1, 3, 4, 6, 7,12)
而日期型的列,值需要用符号#括起来,例如:
[日期] In (#7/2/2012#, #7/12/2012#, #8/30/2012#)
假定编号列是字符型,应该这样修改代码:
Dim Filter As String
Dim Value()As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
Case 0
Tables(e.Node.Text).Filter = ""
MainTable = Tables(e.Node.Text)
DataTables.AllowEdit = True
Case 1
'得到单据审批记录表中未结束的需要审批表单的编号
Dim nms As =String
nms = DataTables("单据审批记录").GetComboListString("编号","表名= '" & e.Node.ParentNode.Text & "' and 结束 = false")
If nms > "" Then
nms = "'" & nms.replace("|","','") & "'"
'从系统表中得到当前父节点的表使用的单据编号列的名称,然后过滤得到编号在单据审批记录中的表.
Dim dr As DataRow = DataTables("系统表").Find("表名 = '" & e.Node.ParentNode.Text & "'")
If dr IsNot Nothing Then
Dim num As String = dr("单据编号列")
Tables(e.Node.ParentNode.Text).Filter = dr("单据编号列") & "In (" & nms & ")"
MainTable = Tables(e.Node..ParentNode.Text)
DataTables.AllowEdit = True
End If
End If
End Select
你可以看看:
http://www.foxtable.com/help/topics/2228.htm
http://www.foxtable.com/help/topics/2410.htm