注册 登录
编程论坛 PowerBuilder

dw_1.setfilter()只能char字段进行过滤吗?

乡村木子 发布于 2007-07-05 10:04, 4823 次点击
我在查询时,按课程代码过滤查询时,
会出现datawindows错误,
内容:types of expressions must match.
但是当按课程名称过滤查询时,则没有问题。
后来发现,c_id字段是numeric类型的,而c_name字段是char类型的。
是不是dw_1.setfilter()中只能对char类型字段过滤呀,
如果别的也可以,请指点一下,万分感谢!
我的代码如下:
if ddlb_1.text = "课程代码" then
dw_1.settransobject(sqlca)
dw_1.setfilter("c_id='"+sle_1.text+"'")
dw_1.retrieve()
end if
if ddlb_1.text = "课程名称" then
dw_1.settransobject(sqlca)
dw_1.setfilter("c_name='"+sle_1.text+"'")
dw_1.retrieve()
end if
7 回复
#2
sam20802007-07-05 16:27

类型不对
当过滤课程代码时,把sle_1.text转换为c_id的类型

#3
乡村木子2007-07-05 19:09
你说的意思是这样吗?
int s
s = integer(sle_1.text)
if ddlb_1.text = "课程代码" then
dw_1.settransobject(sqlca)
dw_1.setfilter("c_id='"+s+"'")
dw_1.retrieve()
end if

这样也不行的,这样在检验时,直接提示错误,
incompatible types in expression :string,integer.

有其它的查询方法吗?别的只要能查就行,谢谢!
#4
ugly9278462007-07-05 19:26

总的原则:转换成一样的 。

#5
乡村木子2007-07-05 19:49
不知道怎么转!你们有别的方法吗?只要能查询就行了,要不我就只有重新建表了,
所有字段,全用char。
#6
路過2007-07-06 13:57
if ddlb_1.text = "课程代码" then
dw_1.settransobject(sqlca)
dw_1.setfilter("c_id='"+sle_1.text+"'")
dw_1.retrieve()
end if

如是c_id 是numeric类型將改為
dw_1.setfilter("c_id= "+sle_1.text+" ")
#7
乡村木子2007-07-06 14:36
非常感谢版主!解决了!真是高手呀!
#8
ycxu20182009-07-31 09:08
這種的原則就是前後數據類型要一致,應該適用于多種數據類型的篩選。
1