以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]老师帮助看下目录树的代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=62072)

--  作者:huangfanzi
--  发布时间:2014/12/24 22:42:00
--  [求助]老师帮助看下目录树的代码
我在窗口中的某个按钮中写了如下代码:
Dim tb As New DropTreeBuilder
tb.SourceTable = DataTables("A") \'指定目录树表
tb.TreeCols = "通知单号" \'指定用于生成目录树的列
tb.SourceCols = "通知单号|公司|代码|合同号|预计入库日期|合同主号" \'指定数据来源列
tb.ReceiveCols = "通知单号|公司|代码|合同号|预计入库日期|合同主号" \'指定数据接收列
tb.TreeWidth=150
tb.TreeFilter="[是否制单]=False" 
Tables("B").Cols("通知单号").DropTree = tb.Build()

这段代码生成的目录树后有个瑕疵,假定A表中有三条记录的是否制单为false,哪么,这个目录树生成的选项一直会有三个,我现在希望选择一个并且写入表后,再选时这个之前选过的不要出现在选项中。
之前我通过B表中的代码修改A表相关记录的是否制单列值可以实时的去掉已经选用过的通知单号,但这个方案在局域网使用中容易产生冲突与错误,我也不想用独占模式写代码,这对初学者来说有点累,所以,我现在的项目实行一个原则:自己做自己的表,在自己的表中只能去引用别的表的数据,不得修改。
基于这个原则,上面的目录树代码中,tb.TreeFilter的条件我希望是:是否制单列为False并且通知单号在表B中未出现过,老师看看能实现吗?谢谢老师。

--  作者:有点甜
--  发布时间:2014/12/24 22:47:00
--  
tb.TreeFilter = "[是否制单]=False and 通知单号 not in (\'" &  DataTables("B").GetComboListString("通知单号").Replace("|", "\',\'") & "\')"
--  作者:huangfanzi
--  发布时间:2014/12/24 22:56:00
--  
甜老师,神人也,真的行,这个 not in 是什么语句啊,没接触过。
--  作者:有点甜
--  发布时间:2014/12/24 22:58:00
--  

 参考 http://www.foxtable.com/help/topics/1647.htm

 


--  作者:huangfanzi
--  发布时间:2014/12/25 9:04:00
--  
tb.TreeFilter = "[是否制单]=False and 通知单号 not in (\'" &  DataTables("B").GetComboListString("通知单号").Replace("|", "\',\'") & "\')"

这段代码中的 and 为什么不能用 andalso 我刚试着用就出错了,说缺少运算符

--  作者:有点甜
--  发布时间:2014/12/25 10:17:00
--  

 andAlso 是代码,不是设置表达式的语法