Lorem Ipsum/DOL Differet Solmena

Separat existentie 2010 Unee MYT por scientie, musica, sport etc, litot Europa usa li sam Vocabular Lingues, differe solmen in li grammatica, li pronunciation. Delete this widget in Dashboard and add yours. This is just an example. Read More

Re: Error DW Externo y archivo Excel

lunes, 16 de diciembre de 2013

Amigo,

has probado exportando como txt o html?


Luis Mendoza
PROYECTOS CORPORATIVOS


El 16 de diciembre de 2013, 9:39, Frank Michael Paucar Caceres <fpaucar.caceres@gmail.com> escribió:
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 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



Anteriormente 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.