1、改成下面
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String = "1=2"
'If e.node.Text = "显示所有行" Then
'flt = ""
'Else
For Each nd As WinForm.TreeNode In e.node.Nodes '清除子节点选中状态
nd.Checked = False
Next
If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
e.node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
If nd.Checked Then
If e.node.Text = "显示所有行" Then
flt = ""
Else
If flt > "" Then
flt = flt & " Or " '注意用or而不是And
End If
If nd.Level = 0 Then '注意下面的条件都要用括号括起来
flt = flt & "( 货品属性 = '" & nd.Text & "')"
Else
flt = flt & "( 货品属性 = '" & nd.ParentNode.Text & "' And 物料分类 = '" & nd.Text & "')"
End If
End If
End If
Next
DataTables("数据列表").LoadFilter = flt
DataTables("数据列表").Load()
2、你这个是加载,不是筛选
DataTables("数据列表").LoadFilter = flt
DataTables("数据列表").Load()
如果要筛选,改成,如
Tables("数据列表").Filter = flt
但你的数据加载不完全,计算流水有可能出错的。你试试把全部数据都加载出来以后,再测试计算流水账。