数据窗口怎么获得列的个数和怎么判断列的类型为DropDownDW类型!

java_xzy 2002-03-13 02:42:09
数据窗口怎么获得列的个数和怎么判断列的类型为DropDownDW类型!
我要循环判断一个数据窗口每个列的数据类型是否dropdownDW类型,如果是,则
需要
dw_1.GetChild('emp_state', state_child) //如'emp_state'列为dropdownDW类型
state_child.settransobject(sqlca)
state_child.retrieve()
请问我怎么获得dw_1的列的个数及判断它的类型是否是dropdownDW.
请高手指教!
...全文
79 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
java_xzy 2002-03-13
  • 打赏
  • 举报
回复
晕倒,真的有比较复杂了!
接下来我这么些对吗?
CHOOSE CASE UPPER(dwParm.Describe(token[i] + '.type'))
CASE 'COLUMN',
//应为我要retrieve子数据窗口数据
//如不明白可看
//http://www.csdn.net/expert/topic/572/572869.xml?temp=.7755243

dw_print.setcolumn(i) //这里我怎么获得当前列?
s_a=dw_print.getcolumnname()
s_b=dw_print.Describe(s_a+".Edit.Style")
if lower(s_b) = "dddw" then
rtncode = dw_print.GetChild(s_a,state_child)
IF rtncode = -1 THEN MessageBox("Error", "Not a DataWindowChild")
state_child.SetTransObject(SQLCA)
state_child.Retrieve()
end if
//------------------------


CASE 'COMPUTE'

END CHOOSE
llitcwl 2002-03-13
  • 打赏
  • 举报
回复
//这样就只能用对象名取,看一段代码吧
list = dwParm.Describe("datawindow.objects")
EndPos = pos(list, '~t', StartPos)

Do while ( EndPos > 0 )
token[i] = Mid(list, StartPos, EndPos - StartPos)
i ++
StartPos = EndPos + 1
EndPos = pos(list, '~t', StartPos)
LOOP
token[i] = Mid(list, StartPos)
Top = UpperBound(token[])
For i = 1 to Top
CHOOSE CASE UPPER(dwParm.Describe(token[i] + '.type'))
CASE 'COLUMN', 'COMPUTE'
tag_1 = dwParm.Describe(token[i] + '.tag')
.....
END CHOOSE
NEXT

java_xzy 2002-03-13
  • 打赏
  • 举报
回复
中国龙,你的方法是可以的,我试验成功,但是,取出来的Object.DataWindow.Column.Count数值是select 语句中查询的列个数,而不是数据窗口中的列的个数,比如,数据窗口数据源为:
select a,b,c from table;
我的数据窗口中也会有a,b,c三个数据列,但是如果我加入一个列a1,还是对应select 语句中的a,这时候,column.count值还是3,请问我怎么取得数据窗口列a1的属性?
vcpb 2002-03-13
  • 打赏
  • 举报
回复
lower(i_dw.Describe(szColumn+".Edit.Style")) = "dddw"
改成lower(i_dw.Describe("ColumnName.Edit.Style")) = "dddw"
即可
llitcwl 2002-03-13
  • 打赏
  • 举报
回复
//不好意思,代码copy的,没改认真:-P
li_count=integer(i_dw.Object.DataWindow.Column.Count)
for i=1 to li_count
if lower(i_dw.Describe('#'+string(i)+".Edit.Style")) = "dddw" then
...........
end if
next
vcpb 2002-03-13
  • 打赏
  • 举报
回复
ColumnName=emp_state
Describe("DataWindow.Column.Count")
Describe("ColumnName.Edit.Style")='dddw'
java_xzy 2002-03-13
  • 打赏
  • 举报
回复
to:中国龙,你的szColumn是什么意思?
sincerity 2002-03-13
  • 打赏
  • 举报
回复
Describe("DataWindow.Column.Count")
Describe("Column.Edit.Style")
llitcwl 2002-03-13
  • 打赏
  • 举报
回复
li_count=integer(i_dw.Object.DataWindow.Column.Count)
for i=1 to li_count
if lower(i_dw.Describe(szColumn+".Edit.Style")) = "dddw" then
...........
end if
next
gungod2000 2002-03-13
  • 打赏
  • 举报
回复
1.li_count = <DW Control Name>.Object.DataWindow.Column.Count
2.UP!

397

社区成员

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

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