La Web del Programador: Comunidad de Programadores
 
    Pregunta:  558 - DDE/OLE EN FOXPRO 2.6 F/W
Autor:  Carlos Miranda
Deseo pasar (automáticamente) el contenido de un campo memo de fox pro 2.6 f/w a un nuevo documento de WORD 97; que luego se le aplique un formato y se imprima.

Quisiera saber como funcionan los comandos DDE/OLE del Fox Pro para estas tareas.

Gracias.


  Respuesta:  FRANK DAVID ARBOLEDA HENA
* MANUALMENTE SE PUEDE SELECCIONAR EL CONTENIDO DEL CAMPO MEMO Y DIRIGIRSE LUEGO AL WORD, LUEGO PEGARLO Y HACERLE LAS MODIFICACIONES CORRESPONDIENTES.

* SI SE DESEA PASAR TODA LA INFORMACION DE UNA TABLA (.DBF) ES NECESARIO REALIZAR UN PROGRAMA QUE TOME CADA CAMPO MEMO Y LO CAPTURE PARA LUEGO DARLE UN NOMBRE DE ARCHIVO INDEPENDIENTE DE ACUERDO A CADA REGISTRO, LUEGO SE PROCEDE A PASARLO AL PROCESADOR DE TEXTO (WORD). EL PROGRAMA PUEDO DISEÑARLO, O DARTE UNA IDEA DE COMO HACERLO...


  Respuesta:  Foxito
Hola... soy de Perú.

Sabes...
Los archivos de datos de FoxPro y VFoxPro son muy sensibles a fallas de electricidad o apagados de pcs inadecuadamente.... Como dicen mis colegas...
1.-Copias backups de los datos periodicamente.
2.-Si tienes dañados IDX o CDX, borralos, habre la tabla (y sus índices si son IDX) y ejecuta REINDEX.(o tu procedimiento que crea los indices IDX o CDX)
3.-Si tienes dañados DBF puedes importarlos a tablas de Excel o de Access y luego exportarlas a DBF para posteriormente renombrarlas. De lo contrario emplea el FileFix del Norton, solo que te dará problemas con los campos memos y general.

Bye


  Respuesta:  Eye
Hola:
Tenes dos formas (que yo conozco) de pasar información no solo a Word sino a cualquier otro programa de Office.
1) DDE. lo primero antes de iniciar la conversacion entre las aplicaciones es abrir un puerto con el word. Observa el siguiente codigo.
=DDESetOption( "SAFETY" ,.F.)
canal_apl = DDEInitiate( "WINWORD" , "SYSTEM" )
IF cancal_apl < 0
RUN /n1 Winword.exe
canal_apl = DDEInitiate( "WINWORD" , "SYSTEM" )
ENDIF
Si quieres escribir algo en el documento de word, simplemente escribe
=DDEExecute( canal_apl, "HOLA, MUNDO" )
o si necesitas operar comandos del word,
=DDEExecute( canal_apl, "[fileopen "c:\mis documentos\prueba.doc")
observa que los comandos son en ingles.

2)OLE. Para ello tienes que crear un objeto ole como sigue:

arch=CREATEOBJECT("Word.Basic")
arch.fileopen("prueba.doc")
arch.fileprintdefault()
arch.FileQuit()
Notaras que los comandos estan en ingles, esto tendras que probarlos si no te funcionan, en español.
Luego es solo cuestion de practicar con esto para ver los resultados.
Espero que te sirva de algo (?).
Chau...