创建数据有多种方法,比如用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')