如何动态创建group

yuxia 2001-07-09 01:48:59
如何在datawindow中动态创建一个group,请给个例子
...全文
186 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylg007 2001-07-31
  • 打赏
  • 举报
回复
up
hzslx 2001-07-31
  • 打赏
  • 举报
回复
up
tanye 2001-07-31
  • 打赏
  • 举报
回复
1. 导出数据窗口语法
2. 替换分组字段
3. 导入语法
Script:
String ls_script,ls_err,ls_groupby
Long ll_pos1,ll_pos2,ll_pos3
ls_script = dw_1.object.datawindow.syntax
ll_pos1 = pos(ls_script,"group(level=3",1)
ll_pos2 = pos(ls_script,'by=("',ll_pos1)
ll_pos3 = pos(ls_script,'"',ll_pos1 + 5)
ls_groupby = '<Bycolumn>'
ls_script = left(ls_script,ll_pos2 + 4) + ls_groupby + mid(ls_script,ll_pos3)
dw_1.create(ls_script,ls_err)
pbdesigner 2001-07-31
  • 打赏
  • 举报
回复
up
yuxia 2001-07-10
  • 打赏
  • 举报
回复
发到我的信箱中吧:yuxiayuxia@sina.com
wangsw 2001-07-10
  • 打赏
  • 举报
回复
哈哈!!
不管!
pbdesigner 2001-07-10
  • 打赏
  • 举报
回复
我的代理服务器有点问题,不能一次性发很多字符,所以分成了好几次。可以按上面回复的顺序拷贝到一起,是完整的源程序啊。
fengjf 2001-07-09
  • 打赏
  • 举报
回复
发一个 fengjf@sina.com
pbdesigner 2001-07-09
  • 打赏
  • 举报
回复
if lower(ls_bandtype) <> "band=header" and lower(ls_bandtype) <> "band=detail" then
ls_left = ls_left+ls_trailer
else
ll_spacepos = pos(ls_dwsyntax," ",1)
ls_left = ls_left+left(ls_dwsyntax,ll_spacepos)
end if
ll_spacepos = pos(ls_dwsyntax," ",1)
ls_dwsyntax = right(ls_dwsyntax,len(ls_dwsyntax) - ll_spacepos + 1)
ll_bandpos = pos(ls_dwsyntax,"band=",1)
loop
ls_dwsyntax = ls_left + ls_dwsyntax
return adw_name.create(ls_dwsyntax,ls_error)
szjlq 2001-07-09
  • 打赏
  • 举报
回复
我来帮你呵吧
呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!
呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!呵呵!
pbdesigner 2001-07-09
  • 打赏
  • 举报
回复
//(续,受不能连续回复3次的限制,又不能发完啦,哪位帮忙呵呵一下)
ls_dwsyntax = ls_dwsyntax + ls_modify
//若需以动态表达式来分组
//ls_dwsyntax = ls_dwsyntax + ls_modify + ls_modify2
ll_bandpos = pos(ls_dwsyntax,"band=",1)
do while ll_bandpos > 0
ls_left = ls_left + left(ls_dwsyntax,ll_bandpos - 1)
ls_dwsyntax = right(ls_dwsyntax,len(ls_dwsyntax) - ll_bandpos + 1) ls_bandtype = mid(ls_dwsyntax,1,11)



pbdesigner 2001-07-09
  • 打赏
  • 举报
回复
//(续)
//若是创建计算字段来分组,还需写类似如下语句
//ls_modify2 = " compute(band=detail alignment='0' expression='ceiling(getrow()/ " + string(ai_row_display) + ")' border='0' color='1633967991' x='3099' y='20' height='76' width='256' format='[general]' name=page_group font.face='arial' font.height='-12' font.weight='400' font.family='2' font.pitch='2' font.charset='0' background.mode='1' background.color='1633837428' )"
pbdesigner 2001-07-09
  • 打赏
  • 举报
回复
思路:先获取已有的group数目再创建.已写成函数f_creategroup(datawindow adw_name,string as_groupname) return integer,若需以动态表达式来分组,可稍作修改已有说明)

string ls_dwsyntax,ls_grouplevel,ls_trailer,ls_modify,ls_left,ls_bandtype,ls_error
long ll_grouppos,ll_bandpos,ll_spacepos

ls_dwsyntax = adw_name.describe("datawindow.syntax")
ll_grouppos = pos(reverse(ls_dwsyntax),"=level)puorg ",1)
if ll_grouppos > 0 then
ls_grouplevel = mid(reverse(ls_dwsyntax),ll_grouppos - 1,1)
end if
if isnull(ls_grouplevel) then
ls_grouplevel = '0'
end if
ls_grouplevel =string( integer(ls_grouplevel) + 1)
ls_trailer = "band=trailer." + ls_grouplevel
ls_modify = " group(level=" +ls_grouplevel+" header.height=0 newpage=yes trailer.height=2012 by=('"+as_groupname+"' ) header.color='536870912' trailer.color='536870912' )"

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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