以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  头痛的动态合成表达式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37134)

--  作者:hbaijia
--  发布时间:2013/7/1 10:57:00
--  头痛的动态合成表达式

用狐表也有一段时间了,但是每到要有合成动态表达式时就发怵,因为与以往的编程用法十分的不同,所以感到到现在为此还没有理解透,只是单纯的模仿,一旦出现没有现成的例子就搞来搞去的总问题,看帮助也看了,但好象讲这方面的就那么点点,怎么办?

如今又遇到了一个问题,我想做些查询工作,条件是:

1、先找到了所有满足条件的行

2、在这些行里再将不满足条件的行去掉

我的做法是:

For Each dr In DataTables("点表").DataRows

DataTables("登记表").Find("编号=\'" & dr("编号") & "\'")

ids=ids & ",\'" & dr("编号") & "\'"

以上没有问题

下面是要将以上找到的行里,将其中一些行的列的内容为 状态1、状态2、状态2 的行从中去掉

ids=ids & ",\'" & dr("状态") & <> "状态1"\'"  

ids=ids & ",\'" & dr("状态") & <> "状态2"\'"   

ids=ids & ",\'" & dr("状态") & <> "状态3"\'"     这个就有问题了,改了几种方法,不是报错,就是不符合要求


--  作者:Bin
--  发布时间:2013/7/1 11:03:00
--  
你这个是不能使用一个IDS来完成的.


声明多一个变量  zt

zt=zt & ",\'" & dr("状态") & "\'"

然后  拼接为 "编号 in (" & ids.trim(",") & ") and 状态 in (" & zt.trim(",") & ")"

--  作者:hbaijia
--  发布时间:2013/7/1 11:58:00
--  
zt=zt & ",\'" & dr("状态") & "\'"

关键加上不等 于怎么加?

zt=zt& ",\'" & dr("状态") & <> "状态1"\'" 这个不对


--  作者:Bin
--  发布时间:2013/7/1 12:00:00
--  
那么再加一句

编号 in (" & ids.trim(",") & ") and 状态 in (" & zt.trim(",") & ") and 状态 not in (\'状态1\',\'状态2\',\'状态3\')"

--  作者:cxabc123
--  发布时间:2013/7/1 14:39:00
--  
我总结的规律是:

DataTables("登记表").Find("编号=12") ,如果要将"12"换成变量,则为12=" & 变量 & "。也就是用" & 变量 & "替换,这样一般不会出错。