Error DW Externo y Archivo Excel
Hola compañeros, que tal!, aquí nuevamente con un problema en PB, les muestro el script de una función que transporta los registros de un DW externo a un archivo excel, hago uso de este script debido a que los archivos excel tienen un límite de 1048576 registros, pero el select genera un reporte a fin de año de casi 2kk de registros, además hago esto porque los usuarios necesitan esta Data en un archivo Access, y buscando y buscando la única manera que me resulta es importando un archivo excel a un nuevo archivo access mediante una DLL que hice en VB6, y es por tal que necesito generar ese archivo excel.
Cabe resaltar que el script funciona (en teoría), pero sólo me permite generar el archivo excel sólo cuando el reporte presenta 510000 registros, si quiero generar un excel desde 510001 registros a más, me sale un mensaje de error y el PB se cierra por completo, la verdad no sé a que se debe o es que este script no va y hay una manera mas productiva de realizar lo que deseo, espero su gran apoyo y espero haber explicado bien, he aquí el script y adjunto la imagen del mensaje por si ayuda a solucionarlo:
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