数据窗口的计算列

用数据窗口控件名.describe("Evaluate('计算公式',行号)") 理论上可以取到数据窗口里所有能用计算列计算的内容,

如:

1、取数据窗口的页数: dw_1.describe("Evaluate('pagecount()',1)")

2、取DropDownDW列显示的值: dw_1.describe("Evaluate('lookupdisplay(列名)',行号)")

3、取最小值: dw_1.describe("evaluate('min(billing_date_time)',1)")

4、求合计: dw_1.describe("evaluate('sum(charges for all)',1)")

 

 

说明: 

Describe  

可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能

正常读取了,而这又是经常遇到的。当行号为0时,表示应用于所有的行;如果表达式无效,返回结果为!

Evaluate  

如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数

 

Evaluate,LookUpDisplay      

在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。如何才能读取用户看到的值?可以使用此函数,LookUpDisplay函数不能直接从PowerScript调用,可以在Describe中和Evaluate函数配合使用。因为函数Lookupdisplay不能指定对哪行数据进行操作,它的参数只有一个字段名称,所以必须和Evaluate函数配合使用。该函数的语法是:Lookupdisplay(columnname)参数columnname是字段的名称,而不是一个字符串。函数执行错误则返回空字符串。

 

例一:

ls_1   =   dw_1.Describe("dw_1.cb_4.text")

ls_2   =   This.Describe(dwo.name   +   ".ColType")

 

语法:   value   =   datawindow.Describe(string   ls)

 

例二:

判断第3行的sex是否为1,如果是则返回男,否则返回女dw_1.Describe("Evaluate('If(sex   =   1,   男,   女)   ',   3)")

语法:   Evalute('expression',rowno)其中,expression是属性表达式,rowno是要描述的行号。该函数放置在Describe的

属性列表中。

 

例三:

dw_1.Describe("Evaluate('Lookupdisplay(column)',"   +   string   (row   number)   +   ")")

在dw_1   里面有一个gxbm字段的edit属性页下面:dataWindow:d_dmzd_gxbm,Display   Column:dmmc,data  

Column:gxbm.在显示时:不是显示gxbm的值,而是显示dmmc的值,但我们用getitemstring(row,"gxbm")时,得到的是gxbm的值,而不是显示的dmmc值,如果我们想得到显示的dmmc值,

那就用lookupdisplay来用:ls_1   =   dw_1.describe("Evaluate('lookupdisplay(gxbm)',"   +   string(1)   +   ")")

 

另:   在用代码学PB中有这样一段代码,值得关注:
integer   li_PageCount

//*******分页
li_PageCount   =   integer(dw_1.describe("evaluate('pagecount()',1)"))
i_int_currentpage   =   integer(dw_1.describe("evaluate('page()',1)"))
st_page.Text   =   "第"+String(   i_int_currentpage   )   +   "页(共"   +   String(   li_PageCount   )+"页)"  

 

 

===========================================
//如何获取ddlb列表中的项(datavalue   和   displayvalue)

//参数:
//adw_1   数据窗口名
//columnname   当前列
//row   当前行
//ast_1   用作显示信息的静态文本控件

===========================================

DataWindowChild   Ldwc
String   Ls_CodeColumn
long   ll_row,ll_rowcount
String   ls_displaycolumn,ls_text   =   ' '
string   ls_prodinfo,   ls_prodname,   ls_prodnum
integer   li_tab,ll_item

 

if   adw_1.describe(Columnname+ '.edit.style ')= 'dddw '   then
adw_1.GetChild(Columnname,Ldwc)
Ls_CodeColumn=adw_1.DESCRIBE(Columnname+ '.DDDW.DATACOLUMN ')
ls_DisplayColumn =adw_1.DESCRIBE(Columnname+ '.DDDW.DisplayColumn ')
ldwc.setfilter( " ")
ldwc.filter()

if   ldwc.rowcount()> 10   then
    ll_rowcount   =   10
else
    ll_rowcount   =   ldwc.rowcount()
end   if

for   ll_row   =1   to   ll_rowcount
ls_text   =ls_text   +   ldwc.getitemstring(ll_row,Ls_CodeColumn)+ '- '+ldwc.getitemstring(ll_row,ls_DisplayColumn)+ '     '
next

ast_1.text   =   ls_text
elseif   adw_1.describe(Columnname+ '.edit.style ')= 'ddlb '   then
ls_prodinfo   = '0 '

ll_item   =   1
do   while   ls_prodinfo   <> ' '
ls_prodinfo   =   adw_1.GetValue(Columnname,   ll_item)

li_tab   =   Pos(ls_prodinfo,   "~t ",   1)

ls_prodname   =   Left(ls_prodinfo,   li_tab   -   1)

ls_prodnum   =   Mid(ls_prodinfo,   li_tab   +   1)

if   pos(ls_prodname, '- ')   =0   then
    ls_text   =   ls_text   +   ls_prodnum   + '- '   +   ls_prodname+ '     '
else
   ls_text   =   ls_text   +   ls_prodname+ '     '
end   if

    ll_item   =   ll_item   +1
loop

ast_1.text   =   ls_text
else
ast_1.text   =   ' '
 
end   if

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值