注册 登录
编程论坛 PowerBuilder

PB中setfilter()函数问题求教?---谢谢版主的回答,问题已经解决了!高兴

dangmiao 发布于 2008-03-31 16:46, 5914 次点击
在数据窗口中
第一列:列名 STU_ID 为char型

如何用setfilter()函数显示单行文本框中指定学号的详细信息?

格式应该怎么写?请知道的朋友,告诉下,谢谢啦!

我写的老是说类型不匹配,向高手求救!
问题补充:这是我"检索"中的程序代码,请大家看看,错在哪里了?
string l
l=trim(sle_1.text)

dw_1.setfilter("t_student.stu_id =" + l + "" )
dw_1.filter()

[[it] 本帖最后由 dangmiao 于 2008-4-2 11:36 编辑 [/it]]
10 回复
#2
wsl0002008-03-31 21:46
dw_1.setfilter("t_student.stu_id ='" + l + "'" )
#3
dangmiao2008-04-01 07:53
[quote][bo]以下是引用 [un]wsl000[/un] 在 2008-3-31 21:46 的发言:[/bo]

dw_1.setfilter("t_student.stu_id ='" + l + "'" )


这样是不报数据类型错了,可是出现另一个错误提示:Expression is not valid. 这又是什么呀?

而我把表名: t_student 去了,就不报错了!可是什么也没有出来,好像一切都没有反应似的!
表中数据大致如下:
stu_id   char(4)   primary key
stu_name char (10)
stu_sex 等等
表名t_student
怎么检索不出来数据呢?
 如果用retrieve()可以全部检索出来
     

知道的朋友希望赐教一下,谢谢!

[[it] 本帖最后由 dangmiao 于 2008-4-1 08:07 编辑 [/it]]
#4
dangmiao2008-04-01 10:59
难道这个地方,没有一个人能解决这个问题吗?这个很难吗?
#5
ugly9278462008-04-01 11:21
语句是没有错的。。。是别的地方出问题了
#6
ugly9278462008-04-01 11:24
string l
l=trim(sle_1.text)

integer i=dw_1.setfilter("stu_id ='" + l + "'" )

dw_1.filter()

看下i的返回值,如果为1就是正确的 。我想可然是你别的地方出问题了
还有个问题是你输入的检索的条件里面没有数据

[[it] 本帖最后由 ugly927846 于 2008-4-1 11:38 编辑 [/it]]
#7
dangmiao2008-04-01 14:03
返回值是1不错,可是就是不出数据,我也不明白为什么,当用retrieve()函数时可以全部出来!这个到底哪个地方错了呢?
#8
ugly9278462008-04-02 09:26
string l ,df
l=trim(sle_1.text)
df="stu_id ='" + l + "'"
messagebox('',df)
integer i=dw_1.setfilter(df )
dw_1.filter()
messageb弹出的df是什么,你在sql语句中用where条件用df看下能不能出数据....
唯一的问题是你的df有问题 ,setfilter函数的功能是把df当作是sql中where语句的
条件。。。。

[[it] 本帖最后由 ugly927846 于 2008-4-2 09:28 编辑 [/it]]
#9
dangmiao2008-04-02 11:35
问题已经解决了,
只要在前面加上
dw_1.settransobject(sqlca)
dw_1.retrieve()
string l ,df
l=trim(sle_1.text)
df=("stu_id ='" + l + "'" )
//messagebox('',df)
dw_1.setfilter(df)
dw_1.filter()
为什么这样就行了呢?无意中发现的,难道filter()不难检测数据出来吗? 谢谢版主的帮忙!
#10
ugly9278462008-04-03 11:10
dw_1.settransobject(sqlca)
这句一定要,因为sqlca是pb默认的事物对象
你创建了对象之后,在提取数据之前一定要dw_1.settransobject(sqlca)一下
要不pb怎么知道你要用哪个事物对象呢
dw_1.retrieve()
这个不要也可以..........
#11
lively19822008-04-26 16:37
string l ,tiaojian
l=trim(sle_1.text)
tiaojian="stu_id='"+l+"'"
dw_1.settransobject(sqlca)
dw_1.retrieve()

dw_1.setfilter(tiaojian)
dw_1.filter()
试试,应该没问题
1