在上文的基础上,帮我解读为什么下列代码运行至invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,STRING(la_val),invo_fields[li_i].of_get_format(al_row))会报错。integer li_i
integer li_ret = 1
integer li_res = 1
long ll_band_row
integer li_merge_row
long ll_band_col
integer li_merge_col
any la_val
time lt_time
datetime ldt_dtime
date ld_date
long ll_nested_rows
long ll_nested_ret
long ll_current_hsplit_values[]
boolean lb_row_height_set = false
if ib_variable_band_height or ib_has_reports or ib_nested then
invo_hgrid = create n_dwr_grid
invo_hgrid.ii_round_ratio = invo_hgrid.ii_round_init_ratio * id_conv
if ib_nested then
invo_parent_hgrid.of_get_split_values(ll_current_hsplit_values,il_band_y)
invo_hgrid.of_add_splits(ll_current_hsplit_values,0)
end if
li_ret = of_dynamic_horisontal_layout(al_row)
end if
if al_row = 0 and il_dw_row_count = 0 and ib_nested then
return il_row_cnt
end if
if ib_has_reports then
for li_i = 1 to ii_fields_count
if invo_fields[li_i].ii_dwo_type = 4 then
ll_nested_ret = invo_fields[li_i].of_process_nested(al_row,al_writer_row,invo_hgrid)
if ll_nested_ret > ll_nested_rows then
ll_nested_rows = ll_nested_ret
end if
continue
end if
next
end if
il_row_cnt = 0
for li_i = 1 to ii_fields_count
if invo_fields[li_i].ii_dwo_type = 4 then
else
if invo_fields[li_i].of_get_visible(al_row) <> 1 then
else
invo_fields[li_i].il_xsplit_ind_from = invo_vgrid.of_add_split(invo_fields[li_i].of_get_x1(al_row))
invo_fields[li_i].il_xsplit_ind_to = invo_vgrid.of_add_split(invo_fields[li_i].of_get_x2(al_row))
li_res = invo_vgrid.of_get_pos(invo_fields[li_i].il_xsplit_ind_from,invo_fields[li_i].il_xsplit_ind_to,ll_band_col,li_merge_col)
if li_res <> 1 then
else
li_res = invo_hgrid.of_get_pos(invo_fields[li_i].il_ysplit_ind_from,invo_fields[li_i].il_ysplit_ind_to,ll_band_row,li_merge_row)
if li_res <> 1 then
else
if il_row_cnt < ll_band_row + li_merge_row then
il_row_cnt = ll_band_row + li_merge_row
end if
la_val = invo_fields[li_i].of_getvalue(al_row)
if (li_merge_col > 0 or li_merge_row > 0) and invo_parm.ib_enable_merge_cells then
choose case classname(la_val)
case "integer", "decimal", "double" , "number", "real"
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,double(la_val),invo_fields[li_i].of_get_format(al_row))
case "string", "char"
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,string(la_val),invo_fields[li_i].of_get_format(al_row))
case "date"
ld_date = la_val
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,ld_date,invo_fields[li_i].of_get_format(al_row))
case "datetime"
ldt_dtime = la_val
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,ldt_dtime,invo_fields[li_i].of_get_format(al_row))
case "time"
lt_time = la_val
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,lt_time,invo_fields[li_i].of_get_format(al_row))
case else
invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,invo_fields[li_i].of_get_format(al_row))
end choose
else
choose case classname(la_val)
case "integer", "decimal", "double" , "number", "real"
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,double(la_val),invo_fields[li_i].of_get_format(al_row))
case "string", "char"
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,STRING(la_val),invo_fields[li_i].of_get_format(al_row))
case "date"
ld_date = la_val
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,ld_date,invo_fields[li_i].of_get_format(al_row))
case "datetime"
ldt_dtime = la_val
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,ldt_dtime,invo_fields[li_i].of_get_format(al_row))
case "time"
lt_time = la_val
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,lt_time,invo_fields[li_i].of_get_format(al_row))
case else
invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,invo_fields[li_i].of_get_format(al_row))
end choose
end if
if ib_yield_enable then
yield()
end if
if ib_cancel then
li_ret = -1
exit
end if
end if
end if
end if
end if
next
if il_row_cnt < ll_nested_rows then
il_row_cnt = ll_nested_rows
end if
if not ib_nested and not lb_row_height_set then
if li_ret = 1 then
of_set_row_height(al_writer_row)
lb_row_height_set = true
end if
end if
return il_row_cnt
最新发布