以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  同样的条件,为什么在table和datalist中执行效果不一样?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=3794)

--  作者:reachtone
--  发布时间:2009/8/3 13:46:00
--  同样的条件,为什么在table和datalist中执行效果不一样?
有个条件表达式为:规格 like \'*16*8*\',目的是筛选规格包含16*8的所有记录。
在table中,把Filter设置为这个条件,可以正常执行;
但在datalist中,把RowFilter设置为这个条件,就执行出错。什么原因呢?怎样解决?

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-8-3 13:57:09编辑过]

--  作者:kylin
--  发布时间:2009/8/3 14:20:00
--  
分成2个Like,用and连接
--  作者:reachtone
--  发布时间:2009/8/3 14:50:00
--  
以下是引用kylin在2009-8-3 14:20:00的发言:
分成2个Like,用and连接

这是个办法。但这样一改的话,查询结果就不精确了:本来是要查询包含16*8的记录,现在变成只要包含16和8这两个数字就都符合条件了,外延明显扩大。
不知还有没有更好的办法?关键就是字符间的那个*号。


--  作者:yangming
--  发布时间:2009/8/3 14:57:00
--  
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim
txt As String
txt = "\'*" & 16*8 & "*\'"
dst.RowFilter = "规格 Like " & txt
这样试试

--  作者:roy78
--  发布时间:2009/8/3 15:09:00
--  
引号太多,把人都搞晕了。
--  作者:reachtone
--  发布时间:2009/8/3 15:10:00
--  
以下是引用yangming在2009-8-3 14:57:00的发言:
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim
txt As String
txt = "\'*" & 16*8 & "*\'"
dst.RowFilter = "规格 Like " & txt
这样试试

呵呵,这样肯定不对。查询条件变成\'*128*\'了。
16*8是一种字符查询条件。


--  作者:HLJ
--  发布时间:2009/8/3 15:29:00
--  
1.長治久安:規範數據格式,儘量避免含有:通配符(*),单引号(\')等特殊符號!
2.偷龍換鳳:Replace → Filter → Replace
--  作者:yangming
--  发布时间:2009/8/3 15:36:00
--  
以下是引用HLJ在2009-8-3 15:29:00的发言:
1.長治久安:規範數據格式,儘量避免含有:通配符(*),单引号(\')等特殊符號!
2.偷龍換鳳:Replace → Filter → Replace

对,主要是星号惹的祸,改成16x8.就没事了
Dim txt As String = e.Form.Controls("TextBox1").Value
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
txt = "\'*" & txt & "*\'"
dst.RowFilter = "第三列 Like " & txt


--  作者:yangming
--  发布时间:2009/8/3 15:41:00
--  
如果非要显示星号,可以加一个辅助列,RowFilter时用辅助列
--  作者:狐狸爸爸
--  发布时间:2009/8/3 16:14:00
--  

 新版本将统一