Hello, I'm trying to export a datawindow to a excel file with 3 worksheets, because an excel file have a limit in rows (version 2007 have a limit of 1048576 rows), my code is ok (in theory) but when I try to export mor than 510000 rows, powerbuilder is close and view a error message.
oleobject myoleobject
integer rc, i, count, j, colcount, rep
string mydata, colname, colnames, ls_select, ls_dwsyntax, ls_err, el
rep = truncate(dw_2.rowcount()/1048575,0)
if mod(dw_2.rowcount(),1048575) > 0 then rep = rep +1
myoleobject = CREATE oleobject
rc = myoleobject.ConnectToNewObject("Excel.Application")
IF rc <> 0 THEN
MessageBox ( "Error", String ( rc ) )
Return
END IF
ls_select = string(dw_2.object.datawindow.table.select)
ls_dwsyntax = SQLCA.SyntaxFromSQL( ls_select, "Style(Type=tabular)", ls_err)
dw_3.Create (ls_dwsyntax, ls_err)
IF ls_err <> '' THEN
MessageBox ("error - Sintaxis", ls_err)
else
dw_3.SetTransObject (SQLCA)
end if
try
myoleobject.Application.Visible = false
myoleobject.Workbooks.Add()
for i = 1 to rep
myoleobject.activeworkbook.sheets(i).name = as_tabla+string(i)//"reporte"+string(i)
dw_3.reset()
dw_2.RowsCopy(((1048574 * (i - 1)) + i), (1048575 * i), Primary!, dw_3, 1, Primary!)
colcount = integer(dw_3.object.DataWindow.column.count)
for j = 1 to colcount
colname = dw_3.describe("#"+string(j)+".Name")
choose case j
case 1
colnames = colname
case else
colnames = colnames + '~t' + colname
end choose
next
colnames = colnames + "~r~n"
mydata = dw_3.object.datawindow.data
clipboard(colnames + mydata)
myoleobject.activeworkbook.sheets(i).paste()
next
//////
for i = 1 to myoleobject.activeworkbook.sheets.count()
el = myoleobject.activeworkbook.sheets(i).name
if el <> as_tabla+string(i) then exit
next
if i = 2 then
myoleobject.activeworkbook.sheets(2).Delete
myoleobject.activeworkbook.sheets(2).Delete
elseif i = 3 then
myoleobject.activeworkbook.sheets(3).Delete
end if
//////
myoleobject.activeworkbook.saveas(as_destino)
myoleobject.activeworkbook.close()
myoleobject.Application.quit
myoleobject.DisconnectObject()
catch ( exception e )
MessageBox ( "Error", e.GetMessage() )
finally
Destroy myoleobject
end try
please explain me the error, sorry for my english.
Thanks,
Frank M. Páucar Cáceres