PROYECTOS CORPORATIVOS
--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 ralizar 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 myoleobjectinteger rc, i, count, j, colcount, repstring mydata, colname, colnames, ls_select, ls_dwsyntax, ls_err, elrep = truncate(dw_2.rowcount()/1048575,0)if mod(dw_2.rowcount(),1048575) > 0 then rep = rep +1myoleobject = CREATE oleobjectrc = myoleobject.ConnectToNewObject("Excel.Application")IF rc <> 0 THENMessageBox ( "Error", String ( rc ) )ReturnEND IFls_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 <> '' THENMessageBox ("error - Sintaxis", ls_err)elsedw_3.SetTransObject (SQLCA)end iftrymyoleobject.Application.Visible = falsemyoleobject.Workbooks.Add()for i = 1 to repmyoleobject.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 colcountcolname = dw_3.describe("#"+string(j)+".Name")choose case jcase 1colnames = colnamecase elsecolnames = colnames + '~t' + colnameend choosenextcolnames = colnames + "~r~n"mydata = dw_3.object.datawindow.dataclipboard(colnames + mydata)myoleobject.activeworkbook.sheets(i).paste()next//////for i = 1 to myoleobject.activeworkbook.sheets.count()el = myoleobject.activeworkbook.sheets(i).nameif el <> as_tabla+string(i) then exitnextif i = 2 thenmyoleobject.activeworkbook.sheets(2).Deletemyoleobject.activeworkbook.sheets(2).Deleteelseif i = 3 thenmyoleobject.activeworkbook.sheets(3).Deleteend if//////myoleobject.activeworkbook.saveas(as_destino)myoleobject.activeworkbook.close()myoleobject.Application.quitmyoleobject.DisconnectObject()catch ( exception e )MessageBox ( "Error", e.GetMessage() )finallyDestroy myoleobjectend tryAnteriormente me propusieron una solución, pero no he logrado hacerlo, no encontraba mucha info respecto a eso, además la mayoría de los usuarios recién están entrándole al office2007.
---
Has recibido este mensaje porque estás suscrito al grupo "TechEra" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a techeraz9+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
---
Has recibido este mensaje porque estás suscrito al grupo "TechEra" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a techeraz9+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
0 comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.