当前位置: 代码迷 >> PB >> datawindow可以动态创建列吗?不是SQL语句透过dw.create
  详细解决方案

datawindow可以动态创建列吗?不是SQL语句透过dw.create

热度:42   发布时间:2016-04-29 05:36:07.0
datawindow可以动态创建列吗?不是SQL语句通过dw.create
想做一个动态报表,网上都是通过SQL语句生成,列是固定了,
我的思路是放一个表来存字段.  一个字段一条记录
如table(id varchar(10),columname varchar(50),colvalue varchar(100))

数据大概 
001 姓名         张三
001 性别           男
001 出生年月  1998-02-02
002 姓名         李四
002 性别          女
002 出生年月  1994-01-01

创建文本,线条这是可以 直接create text( visible=1 name=lable_1
但愿如何设计报表动态创建列(我想动态创建 联系电话列,联系地址等等来绑定table)
可以用create column吗?好似没哪么简单,编辑源改一下列的ID就保存不了
------解决方案--------------------
引用:
string ls_rt
string ls_dwsyntax,ls_modfiy
ls_dwsyntax = describe("datawindow.syntax")
ll_Pos   =   Pos(Lower(ls_dwsyntax),   "table(column=")   
do
 i++
 ll_endpos = ll_Pos
 ll_Pos   =   Pos(Lower(ls_dwsyntax),   "column=", ll_Pos+1)   
loop while ll_Pos>0
ll_endpos   =   Pos(Lower(ls_dwsyntax),   "~r~n",ll_endpos)
ls_tmp = "Column_user_"+string(i)
ls_modfiy = replace(ls_dwsyntax,ll_endpos+2,1,"column=(type=char(10)  name="+ls_tmp+" dbname=~""+ls_tmp+"~")~r~n")
string error_create
Create(ls_modfiy, error_create)
IF Len(error_create) > 0 THEN
 messagebox("",error_create)
END IF
ls_rt=modify('create column(band=detail id='+string(i)+' alignment="0" tabsequence=1 border="0" color="33554432" x="'+string(xpos)+'" y="'+string(ypos)+'" height="76" width="1000"   name='+ls_tmp+' visible="1"   background.color="136870912")')
if len(ls_rt)>0 then  messagebox('',ls_rt)  自己写了一个


这个应该可以

列只能通过生成语法,然后通过create来创建整个数据窗口来实现,因为列在数据窗口语法中有两部分

一部分是table中的设置,一部分中数据窗口显示的设置

  相关解决方案