如果获取DATAWINDOW中点击列的值.只要点击的这行的这列!

如果获取DATAWINDOW中点击列的值.只要点击的这行的这列!
[2 byte] By [incisive-泡泡随风飘] at [2008-1-9]
# 1
UP
在线ing 21:39
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 2
sql数据库
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 3
先在数据窗口的clicked事件中写如下代码:

selectrow(0,false)
if row > 0 then selectrow(row,true)

然后在需要取值的地方写这样的代码:
long ll_row
ll_row = dw_1.GetSelectedRow(0)
if ll_row > 0 then
dw_1.GetItemString(ll_row,"列名") //或GetItemNumber()等等,根据列的类型而定.
end if
# 4
不是这个意思。

我是想取出,在数据窗口里点击到的那个列里的值,点哪个列不一定啊
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 5
我现在想
string str1,str2
string col_name = dw_1.getcolumnName()
select 列名,:col_name
into :str1,:str2
from 表
where 条件。
但是我的str2里一直都是和col-name一样的值
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 6
clicked事件里,用dwo.name可以取出列名.
# 7
另外你的col_name是个常量,相当于直接把col_name的值赋给str2,所以会出现你说的情况.
# 8
楼主的意思是不是根据单击的列,然后再从数据库里面取出这个列的值?
直接从数据窗口里面取不是一样吗?
# 9
是啊,我取出列名了,但是往sql里传变量传不进去了~!
又不想用2个数据窗
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 10
一样,只要能取出来就行。不会取
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 11
应该可以用动态SQL解决.
# 12
你单击的列不是你想取值的列吗?
# 13
就是我点哪个列就取哪个列的值
双击
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 14
这样试试:
getitemstring(row,string(dwo.name))
getitemnumber(row,string(dwo.name))
# 15
你能联系我不?QQ 277369280 MSN par_bubbles@hotmail.com
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 16
我这个列不一定是int的还是char的还是datatime的。怎么办
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 17
如果单纯取值的话这样试试:
ls_data = string(dwo.Primary[row])
# 18
Object: w_sjl_cx
Event: dw_1::doubleclicked
(0000): Error C0085: Invalid variable declaration initialization
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 19
在clicked中调用of_getitem(row, dwo.name)
自己编一个函数,返回any类型
of_getitem(al_row, colname)

String ls_ColType

ls_ColType = this.Describe(as_colname + ".ColType")

Choose Case ls_ColType
Case "date"
Return(this.GetItemDate(al_row, as_colname))
Case "datetime"
Return(this.GetItemDateTime(al_row, as_colname))
Case "int", "long", "number"
Return(this.GetItemNumber(al_row, as_colname))
Case "time"
Return(this.GetItemTime(al_row, as_colname))
Case Else
If Pos(ls_ColType, "char") > 0 Then
Return(this.GetItemString(al_row, as_colname))
ElseIf Pos(ls_ColType, "decimal") > 0 Then
Return(this.GetItemDecimal(al_row, as_colname))
Else
//NOT SUPPORT
messagebox("提示", "不被支持的字段类型!")
Return -1
End If
End Choose
caoyin-嘈几几 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 20
把你doubleclicked的代码贴出来我看看.
# 21
呀,青锋也在啊。
辛苦了。
我doubleclicked里只有
ls_data = string(dwo.Primary[row])就提示不认识 ls_data 不知道怎么定义

我现在数据库打不开了。不知道为什么。
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 22
QQ 277369280 联系我吧。网速好慢。耽误事啊
incisive-泡泡随风飘 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 23
你得定义一个string类型的变量
string ls_data //如果要在doubleclicked事件以外的地方使用可以定义成实例变量.
ls_data = string(dwo.Primary[row])
# 24
呵呵,我就是青锋,马甲是也.
caoyin(嘈几几)的方法也不错,结合一下更好.