setfliter()的expression is not valid?

viewvalue 2010-05-05 01:25:34
shouji是表中的一个列名称,cs是提取的手机号码,都为char类型,经测试二者没有问题;执行到setfilter时弹出
expression is not valid?问题,其他地方都没问题,麻烦各位大侠看看

这段代码如下:
int j
j=dw_1.setfilter("shouji='"+cs+"'") //
messagebox(" ",j)//测试返回值
dw_1.filter()

更换dw_1.setfilter("shouji like"+"'%"+cs+"%'") 也出现相同的问题,快崩溃了
...全文
193 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
HyoRiLee 2011-01-04
  • 打赏
  • 举报
回复
不小心输错了,在a的前后都有+表示连接,括号里的过滤条件应该是''sex like'%''+a+''%'''
HyoRiLee 2011-01-04
  • 打赏
  • 举报
回复
应该改成dw_1.setfilter(''shouji like'%'' cs ''%'''),其余的一样,这个问题我碰到过,后来解决了,解决问题的关键是要知道,在pb中是用双引号,而SQL关系语言字符用单引号,按照我写的试一下吧,保证能解决问题,举个模糊查询的例子,有个变量a,将单行文本框的值赋给它,当作对学生表的查询条件,dw_1.setfilter(''sex like '%'' a ''%''') dw_1.filter() dw_1.retrieve(),这样就可按往单行文本框输入的字符当作变量a的值,如果输入为男,则按照学生表性别为男的条件过滤
HyoRiLee 2011-01-04
  • 打赏
  • 举报
回复
应该改成dw_1.setfilter(''shouji like'%'' cs ''%'''),其余的一样,这个问题我碰到过,后来解决了,解决问题的关键是要知道,在pb中是用双引号,而SQL关系语言字符用单引号,按照我写的试一下吧,保证能解决问题,举个模糊查询的例子,有个变量a,将单行文本框的值赋给它,当作对学生表的查询条件,dw_1.setfilter(''sex like '%'' a ''%''') dw_1.filter() dw_1.retrieve()
zlf19810306 2010-05-05
  • 打赏
  • 举报
回复
pb的help里有明确的说明If you need to use the % or _ characters as part of the string, you can use the escape keyword to indicate that the character is part of the string. For example, the _ character in the following filter string is part of the string to be searched for, but is treated as a wildcard:

comment LIKE ~'%o_a15progress%~'

The escape keyword designates any character as an escape character (do not use a character that is part of the string you want to match). In the following example, the asterisk (*) character is inserted before the _ character and designated as an escape character, so that the _ character is treated as part of the string to be matched:

comment like ~'%o*_a15progress%~' escape ~'*~'


这里要用~'转义符
zscstar 2010-05-05
  • 打赏
  • 举报
回复
shouji是表中的一个列名称,cs是提取的手机号码,都为char类型,经测试二者没有问题;执行到setfilter时弹出


这段代码如下:
int j
j=dw_1.setfilter("shouji='"+cs+"'") //
messagebox(" ",j)//测试返回值
dw_1.filter()

string ls_filter
ls_filter = "shouji like"+"'%"+cs+"%'"更换dw_1.setfilter(ls_filter )


这样调试一下,如果不行,把ls_filter 的值取出来到窗口去调试。。。。
zscstar 2010-05-05
  • 打赏
  • 举报
回复
shouji是表中的一个列名称,cs是提取的手机号码,都为char类型,经测试二者没有问题;执行到setfilter时弹出
expression is not valid?问题,其他地方都没问题,麻烦各位大侠看看

这段代码如下:
int j
j=dw_1.setfilter("shouji='"+cs+"'") //
messagebox(" ",j)//测试返回值
dw_1.filter()

string ls_filter
ls_filter = "shouji like"+"'%"+cs+"%'"
更换dw_1.setfilter(ls_filter ) 也出现相同的问题,快崩溃了



这样调试一下,如果不行,把ls_filter 的值取出来到窗口去调试。。。。


永生天地 2010-05-05
  • 打赏
  • 举报
回复
问题应该出在 shouji这个列名的使用上

shouji是数据库表里的列名,而到了datawindow里如果查询中进行了多表查询
列名就会成为表名_列名的模式。

你打开datawindow , 点到shouji那个列上,在属性中看看name到底是什么,
pb的filter中要使用的列名是这个名
PB菜鸟 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wag_enu 的回复:]
引用楼主 qinlei626 的回复:
shouji是表中的一个列名称,cs是提取的手机号码,都为char类型,经测试二者没有问题;执行到setfilter时弹出
expression is not valid?问题,其他地方都没问题,麻烦各位大侠看看

这段代码如下:
int j
j=dw_1.setfilter("shouji='"+cs+"'") //
messagebox("……
[/Quote]
按楼上的方法试试,自己调试下,看是不是哪里的值有问题。
wag_enu 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 qinlei626 的回复:]
shouji是表中的一个列名称,cs是提取的手机号码,都为char类型,经测试二者没有问题;执行到setfilter时弹出
expression is not valid?问题,其他地方都没问题,麻烦各位大侠看看

这段代码如下:
int j
j=dw_1.setfilter("shouji='"+cs+"'") //
messagebox(" ",j)//测试返回值
dw_1.fi……
[/Quote]
得确定shouji 在DW 里还是不是那个名称.
先用DW 对象设计画板打开该DW对象,测试一下filter 的表达式看对不对.
sjlion 2010-05-05
  • 打赏
  • 举报
回复
ls_expression = "shouji='"+cs+"'"

你把ls_expression这个表达式放到你的数据窗口中去看有效没有。 rows-filter

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧