以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 目录树筛选问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133008) |
||||
-- 作者:ZJZK2018 -- 发布时间:2019/4/3 21:23:00 -- 目录树筛选问题 ![]() ![]()
下面红色这代码如何调整: Dim s As String = e.Form.Controls("Chebox_sxs").Text Dim tb1 As Table = Tables(e.Form.Name & "_Table1") Dim dt As DataTable = DataTables("招标信息") Dim Colstr() As String Dim qts As String() = {"\'","#",""} Dim trv As WinForm.TreeView = e.Sender Dim flt As String = "" Dim nd As WinForm.TreeNode Dim pd As WinForm.TreeNode Dim notchecked As Integer = 0 Colstr = s.split("|") If e.Node.Name = "显示所有项目" Then If e.Node.Checked = True Then For Each nd In trv.AllNodes If nd.Name <> "显示所有项目" Then nd.Checked = False End If Next tb1.Filter = "" Else For Each nd In trv.AllNodes nd.Checked = False Next tb1.Filter = (1 = 2) End If trv.CollapseAll Return Else trv.AllNodes(0).Checked = False End If For Each nd In e.node.allNodes nd.Checked = False Next pd = e.Node.ParentNode Do While pd IsNot Nothing pd.Checked = False pd = pd.ParentNode Loop For Each nd In trv.AllNodes If nd.Checked Then Dim rts() As String = nd.FullPath.Split("\\") Dim val As String = "" For i As Integer = 0 To rts.length - 1 If dt.DataCols(Colstr(i)).IsString Then If rts(i) <> "空" Then If val > "" Then val = val & " And " val = val & Colstr(i) & " = " & qts(0) & rts(i) & qts(0) Else val = val & Colstr(i) & " = " & qts(0) & rts(i) & qts(0) End If ElseIf rts(i) = "空" Then If val > "" Then val = val & " And " val = val & Colstr(i) & " Is Null" Else val = val & Colstr(i) & " Is Null" End If End If ElseIf dt.DataCols(Colstr(i)).IsDate Then If rts(i) <> #0001-1-1 0:00:00# Then If val > "" Then val = val & " And " val = val & Colstr(i) & " = " & qts(1) & rts(i) & qts(1) Else val = val & Colstr(i) & " = " & qts(1) & rts(i) & qts(1) End If ElseIf rts(i) = #0001-1-1 0:00:00# Then If val > "" Then val = val & " And " val = val & Colstr(i) & " Is Null" Else val = val & Colstr(i) & " Is Null" End If End If ElseIf dt.DataCols(Colstr(i)).IsNumeric Then If rts(i) <> 0 Then If val > "" Then val = val & " And " val = val & Colstr(i) & " = " & qts(2) & rts(i) & qts(2) Else val = val & Colstr(i) & " = " & qts(2) & rts(i) & qts(2) End If ElseIf rts(i) = 0 Then If val > "" Then val = val & " And " val = val & Colstr(i) & " Is Null" Else val = val & Colstr(i) & " Is Null" End If End If ElseIf dt.DataCols(Colstr(i)).IsBoolean Then If rts(i) <> False Then If val > "" Then val = val & " And " val = val & Colstr(i) & " = " & qts(0) & True & qts(0) Else val = val & Colstr(i) & " = " & qts(0) & True & qts(0) End If ElseIf rts(i) = False Then If val > "" Then val = val & " And " val = val & Colstr(i) & " = " & qts(0) & False & qts(0) Else val = val & Colstr(i) & " = " & qts(0) & False & qts(0) End If End If End If Next If flt > "" Then flt = flt & " Or (" & val & ")" Else flt = val End If notchecked + = 1 End If Next Dim nids As String = dt.GetComboListString("系统编号",flt) If flt > "" AndAlso notchecked > 0 Then tb1.Filter = "系统编号 In (\'" & nids.Replace("|","\',\'") & "\')" Else tb1.Filter = (1 = 2) End If [此贴子已经被作者于2019/4/3 21:24:41编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/4/3 21:44:00 -- 改成
If flt > "" Then |
||||
-- 作者:ZJZK2018 -- 发布时间:2019/4/10 14:45:00 -- 下面表达式代码出错: Dim nids As String = tb1.DataTable.GetComboListString("系统编号",flt & " And 招标审核 = \'通过\'") If flt > "" AndAlso notchecked > 0 Then tb1.Filter = "系统编号 In (\'" & nids.Replace("|","\',\'") & "\')" Else tb1.Filter = (1 = 2) End If 提示: .NET Framework 版本:2.0.50727.8762 Foxtable 版本:2018.10.9.1 错误所在事件:窗口,投标分配台帐,Trv_sxs,AfterCheckNode 详细错误信息: 语法错误:“And”运算符前缺少操作数。 |
||||
-- 作者:有点甜 -- 发布时间:2019/4/10 15:38:00 -- If flt > "" AndAlso notchecked > 0 Then
Dim nids As String = tb1.DataTable.GetComboListString("系统编号", flt & " And 招标审核 = \'通过\'") tb1.Filter = "系统编号 In (\'" & nids.Replace("|","\',\'") & "\')"
Else
tb1.Filter = (1 = 2)
End If
|