当前位置: 代码迷 >> PB >> :怎么在代码中获取数据窗口中计算域名称
  详细解决方案

:怎么在代码中获取数据窗口中计算域名称

热度:10   发布时间:2016-04-29 06:51:03.0
请教高手:如何在代码中获取数据窗口中计算域名称
一数据窗口dw_1,sql语句为 select yw,sx,yy from score 
数据窗口共4列,列名顺序分别为yw、sx、yy、zf,其中zf为计算域,表达式为“yw+sx+yy”
在列名未知的情况下,可通过以下代码依次获取窗口中由sql语句选择所产生的列名yw、sx、yy
string ls_lm1,ls_lm12,ls_lm3,ls_lm4
ls_lm1=dw_1.Describe("#1.name")  //可获取列名yw
ls_lm2=dw_1.Describe("#2.name") //可获取列名sx
ls_lm3=dw_1.Describe("#3.name") //可获取列名yy

可是无法获取计算域zf的名称。
ls_lm4= ?(计算域名称)
哪位高手知道如何才能获取这个计算域名称?请不吝赐教,先谢啦!

------解决方案--------------------
如果不是通用的话,则可以直接指定 ls_lm4 = 'zf'
如果想做成通有的,可以参照如下思路:
1,用describe("datawindow.objects")取得DW对象里的用 ~t 分隔的所有object的名称字符串。
2,写方法撤分各个对象名字至一个字符串数组。
3,通过describe('对象名称.type')就可以取得该对象的类别如compute /column 等。。。

------解决方案--------------------
String ls_lm1,ls_lm2,ls_lm3,ls_lm4
String ls_dwsyntax
Long ll_pos

ls_lm1 = dw_1.Describe("#1.name") //可获取列名yw
ls_lm2 = dw_1.Describe("#2.name") //可获取列名sx
ls_lm3 = dw_1.Describe("#3.name") //可获取列名yy

ls_dwsyntax = dw_1.Object.datawindow.Syntax
ll_pos = Pos(ls_dwsyntax, "compute(")
ll_pos = Pos(ls_dwsyntax, "name=", ll_pos)
ls_lm4 = Trim(Mid(ls_dwsyntax, ll_pos + 5,  &
Pos(ls_dwsyntax, "visible=", ll_pos) -  (ll_pos + 5)))


感觉这个方法好让人暴汗
  相关解决方案