您的位置:首页 > 其它

创建动态数据窗口的两种方法

2016-04-18 02:35 453 查看
创建数据有多种方法,比如用SELECT语句创建,这里最简单,还有用自定义字创建数据窗口,这个比较复杂,

下面就这两种方法介绍一下:

1、用SELECT创建数据窗口

string ls_sql = 'select * from mara'

string error_syntaxfromSQL, error_create

string new_syntax

new_syntax = SQLCA.SyntaxFromSQL(ls_sql, 'Style(Type=grid)', error_syntaxfromSQL)

IF Len(error_syntaxfromSQL) > 0 THEN

// Display errors

messagebox('创建失败[1]!!!','错误创建语句:'+error_syntaxfromSQL)

return

ELSE

// Generate new DataWindow

dw_1.Create(new_syntax, error_create)

IF Len(error_create) > 0 THEN

messagebox('创建失败[2]!!!','创建数据窗口出错:'+ error_create)

return

END IF

END IF

string ls_request, ls_report

ls_report = dw_1.Describe("Datawindow.Objects") +"~t"

long Ll_Pos,ll_start

string ls_objstr,ls_obj

string ls_colname[]

long ll_count

Ll_Pos = Pos(Ls_ObjStr, "~t", Ll_Start)

//设置数据窗口更新字段

long Ll_Pos,ll_start =1

string ls_objstr,ls_obj

string ls_colname[]

long ll_count

Ls_ObjStr = DW_1.Describe("Datawindow.Objects") + "~t"

Ll_Pos = Pos(Ls_ObjStr, "~t", Ll_Start)

Do While Ll_Pos > 0

Ls_Obj = Mid(Ls_ObjStr, Ll_Start, Ll_Pos - Ll_Start)

If (DW_1.Describe(Ls_Obj + ".type") = 'column' ) And (DW_1.Describe(Ls_Obj + ".band") = 'detail') And &

(DW_1.Describe(Ls_Obj + ".visible") = "1" ) Then

ll_count ++

ls_colname[ll_count] = Trim(Ls_Obj)

End if

Ll_Start = Ll_Pos + 1

Ll_Pos = Pos(Ls_ObjStr, "~t", Ll_Start)

loop

for ll_count =1 to upperbound(ls_colname)

DW_1.MODIFY('update=yes updatewhereclause=yes key=yes name='+ls_colname[ll_count]+' dbname="'+ls_colname[ll_count]+'"')

next

DW_1.MODIFY('updatewhere=1 updatekeyinplace=no')

DW_1.SetTransObject(SQLCA)

2、用自定义字段创建数据窗口

//定义全局变量

string is_colname[] = {'col1','col2','col3'} //所有字段名

string is_headtxt[] = {'参数1','参数2','参数3'} //所有字段对应的头文本

string is_colsize[] = {'char(20)','number','decimal(0)'} //所有字段对应的类型

string is_font_face = '幼圆' //显示的字体

boolean ib_edit = TRUE //列是否可编辑

//实现代码

string ls_sql,ls_error,ls_tempsize

long ll_i

long ll_x,ll_width,ll_tabseq

//说明版本及数据窗口的属性

ls_sql = 'release 9;~r~n'+&

+'datawindow ( units=0 timer_interval=0 color=1073741824 processing=1 print.printername="" '+&

+'print.documentname="" print.orientation=0 print.margin.left=110 print.margin.right=110 '+&

+'print.margin.top=96 print.margin.bottom=96 print.paper.size=0 print.paper.source=0 '+&

+'print.canusedefaultprinter=yes grid.lines=0 selected.mouse=yes)'

ls_sql = ls_sql + + '~r~n' + &

+'header(height=92 color="536870912" )'+&

+'summary(height=0 color="536870912" )'+&

+'footer(height=0 color="536870912" )'+&

+'detail(height=100 color="536870912" )'

//声明数据窗口的所有字段

ls_sql = ls_sql + '~r~ntable('

for ll_i = 1 to upperbound(is_colname) step 1

ls_sql = ls_sql +'column=(type='+string(is_colsize[ll_i])+' updatewhereclause=yes name='+is_colname[ll_i]+' dbname="'+is_colname[ll_i]+'" )~r~n'

next

ls_sql = ls_sql + ')~r~n'

//设置所有列的抬头

ll_width = 0

ll_X = 9

for ll_i = 1 to upperbound(is_colname) step 1

ll_x = ll_x + 9 +ll_width

if lower(left(is_colsize[ll_i],4)) = 'char' then

ls_tempsize = mid(is_colsize[ll_i],pos(is_colsize[ll_i],'(')+1)

ll_width = long(mid(ls_tempsize,1,pos(ls_tempsize,')')-1))

else

ll_width = 10

end if

ll_width = ll_width * 32

ls_sql = ls_sql + &

+'text(name='+is_colname[ll_i]+'_t visible="1" band=header font.charset="0" '+&

+'font.face="'+is_font_face+'" font.family="2" font.height="-12" font.pitch="2" '+&

+'font.weight="400" background.mode="1" background.color="536870912" color="33554432" '+&

+'alignment="2" border="0" x="'+string(ll_x)+'" y="8" height="76"'+&

+'width="'+string(ll_width)+'" text="'+is_headtxt[ll_i]+'" )~r~n'

next

ls_sql = ls_sql +'~r~n'

//设置所有列的属性

ll_width = 0

ll_x = 9

for ll_i = 1 to upperbound(is_colname) step 1

ll_x = ll_x + 9 +ll_width

if lower(left(is_colsize[ll_i],4)) = 'char' then

ls_tempsize = mid(is_colsize[ll_i],pos(is_colsize[ll_i],'(')+1)

ll_width = long(mid(ls_tempsize,1,pos(ls_tempsize,')')-1))

else

ll_width = 10

end if

ll_width = ll_width * 32

if ib_edit then //设置可编辑

ll_tabseq = ll_i * 10

end if

ls_sql = ls_sql + &

+'column(name='+is_colname[ll_i]+' visible="1" band=detail id='+string(ll_i)+&

+' x="'+string( ll_x)+'" '+&

+'y="8" height="88"'+&

+'width="'+string(ll_width)+'" color="33554432" border="0" alignment="0" format="[general]" '+&

+'edit.focusrectangle=no edit.autohscroll=yes edit.autoselect=yes edit.autovscroll=no edit.case=any edit.codetable=no '+&

+'edit.displayonly=no edit.hscrollbar=no edit.imemode=0 edit.limit=0 edit.password=no edit.vscrollbar=no edit.validatecode=no '+&

+'edit.nilisnull=no edit.required=no criteria.required=no criteria.override_edit=no crosstab.repeat=no background.mode="1" '+&

+'background.color="536870912" font.charset="0" font.face="'+is_font_face+'" font.family="2" font.height="-12" font.pitch="2" '+&

+'font.weight="400" tabsequence='+string(ll_tabseq)+' )~r~n'

next

ls_sql = ls_sql +'~r~n'

ls_sql = ls_sql +&

+'htmltable(border="1" )~r~n'+&

+'htmlgen(clientComputedFields="1" clientEvents="1" clientFormatting="0" clientScriptable="0" '+&

+'clientValidation="1" generateJavaScript="1" netscapeLayers="0" netscapelayers="0" encodeSelfLinkArgs="1" )~r~n'+&

+'export.xml(headGroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 )~r~n'+&

+'import.xml()~r~n'+&

+'export.pdf(method=0 distill.customPostScript="0" xslfop.print="0" )~r~n'

dw_1.Create(ls_sql,ls_error) //创建数据窗口

if ls_error <> '' and not isnull(ls_error) then

messagebox('error',ls_error,stopsign!)

end if

messagebox('','Success')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: