有个条件表达式为:规格 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连接
这是个办法。但这样一改的话,查询结果就不精确了:本来是要查询包含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
这样试试
呵呵,这样肯定不对。查询条件变成'*128*'了。
16*8是一种字符查询条件。
1.長治久安:規範數據格式,儘量避免含有:通配符(*),单引号(')等特殊符號!
2.偷龍換鳳:Replace → Filter → Replace
以下是引用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
如果非要显示星号,可以加一个辅助列,RowFilter时用辅助列