Jose,
Aprovechando el hilo, y el tema OLE, cuando uso Excel OLE...
TRY
oAccess := GetActiveObject( "Access.Application" )
CATCH
TRY
oAccess := CreateObject( "Access.Application" )
CATCH
Alert( "ERROR! Word not avialable. [" + Ole2TxtError()+ "]" )
ORALBARANS->( DbCloseArea() )
LINIESALBARANS->( DbCloseArea() )
RETURN Nil
END
END
oAccess:Visible := .F.
oAccess:OpenCurrentDatabase := cData
oTable := oAccess:CurrentDb:OpenRecordSet( "Do_Ligne_PR" )
::oProgressBar1:nValue := 0
::oProgressBar1:lVisible := .T.
::oProgressBar1:nMax := oTable:RecordCount
For nI := 1 to ::oProgressBar1:nMax
::oProgressBar1:nValue ++
::oStatusBar1:cText := ::aIdioma[9,oXevi:nIdioma]
If oTable:Fields( "Dossier_Laser_ID" ):Value == Val(::oEditExp:cText)
cRefe := oTable:Fields( "Code_PR" ):Value
If Len( AllTrim( cRefe ) ) == 10 .and. Subs( cRefe, 1, 4 ) = "0000"
cRefe := SubStr( cRefe, 5, 6 )
EndIf
Aadd( aData, { "PR",;
cRefe,;
oTable:Fields( "Libelle_PR" ):Value,;
oTable:Fields( "QTE_DDE" ):Value,;
oTable:Fields( "PRIX_HT" ):Value } )
EndIf
oTable:MoveNext()
next
oTable := oAccess:CurrentDb:OpenRecordSet( "Do_Ligne_MO" )
::oProgressBar1:nValue := 0
::oProgressBar1:lVisible := .T.
::oProgressBar1:nMax := oTable:RecordCount
For nI := 1 to ::oProgressBar1:nMax
::oProgressBar1:nValue ++
::oStatusBar1:cText := ::aIdioma[10,oXevi:nIdioma]
If oTable:Fields( "Dossier_Laser_ID" ):Value == Val(::oEditExp:cText)
cRefe := oTable:Fields( "Code_MO" ):Value
Aadd( aData, { "MO",;
SubStr( cRefe, 1, 4 ) + SubStr( cRefe, 6, 4 ),;
oTable:Fields( "Libelle_MO" ):Value,;
oTable:Fields( "Temps1" ):Value,;
0 } )
EndIf
oTable:MoveNext()
next
oAccess:CloseCurrentDatabase()
Por mas que haga oExcel:Visible := .F.,... cuando llega a oAcces:CloseCurrentDatabase().... hace un pantallazo de Access ¿?
He probado incluso añadir otro Visible := .F. antes del CloseCurrentDataBase(), pero sigue empeñado en mostrarme un pantallazo de Access...
¿Se puede eliminar ese "pantallazo" ???
Un Saludo,
Xevi.
"Jose F. Gimenez" <
jfgimenez@wanadoo.es> escribió en el mensaje news:431f1c94$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
>
> José Luis, Paco,
>
>> ¿¿Y por que no utilizas tOleAuto para abrir una hoja excel y grabar ahí el
>> informe?? Se que es lento... pero así no tienes que esperar a nadie.
>
> Yo particularmente uso siempre OLE para enviar los listados a Excel. Pero a
> diferencia de lo que la mayoría piensa, no tiene por qué ser lento, siempre
> y cuando se sigan algunas reglas que ya me harté de decir hace mucho tiempo
> en otros foros:
>
> - No rellenar celdilla a celdilla, sino que es mejor enviar bloques (cuanto
> más grandes mejor) de celdillas a través del portapapeles.
> - No aplicar estilos de celdas (fuente, color, etc.) una a una, sino por
> rangos, filas o columnas.
> - No hacer visible Excel hasta terminar todo. Si Excel está visible mientras
> se rellena la hoja será mucho más lento.
>
> En cuanto tenga un rato os preparo un pequeño ejemplo que muestre estas
> técnicas.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--