Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Cómo imprimir un campo general mediante Word y Visual FoxPro 9.0 o versiones anteriores

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 175173
Resumen
Cuando se utiliza el Diseñador de informes para imprimir un campo general que tiene texto inserta con un procesador de textos, OLE enlazados objeto del Diseñador de informes tiene que ser tamaño para ser tan grande como la mayor cantidad de texto en los campos generales del control. Esto puede presentar problemas si hay varias páginas de texto en el campo general. El control OLE dependiente se puede ampliar sólo para el alto de una sola página en el Diseñador de informes, que no normalmente es suficiente para imprimir un campo general que tiene más de una página de datos.
Más información
Utilizar un campo memo no sería una manera de almacenar los datos y que se imprimen correctamente en el Diseñador de informes. El problema con este método es que cualquier formato como subrayado, negrita o distintos tamaños de fuente del texto no está permitido en un campo memo. Es necesario un procesador de textos para dar formato a datos de esta manera y almacenarla en un campo general es la única forma para conservar el formato de los datos intactos. En lugar de utilizar el Diseñador de informes para imprimir el campo general, enviarlo a un procesador de textos como Word para Windows permitirá que todos los datos en un campo general que se va a imprimir correctamente.

A continuación son dos ejemplos de código que utiliza Automatización para llamar a Word y, a continuación, utilizar WordBasic o Visual Basic para comandos de aplicaciones (VBA) para pasar los datos a Word. El primer ejemplo sólo funciona con Word 6.0, Word 95 u Office Word 2003 con cualquier versión de Visual FoxPro. El segundo ejemplo sólo funciona con Word 97 y Visual FoxPro versiones 5.0 con Service Pack 2 y 6.0. Si el error "código de error OLE 0x80020005: tipo no coincide." se produce, mire el siguiente artículo en Microsoft Knowledge Base:
169565Tipos no coinciden con la automatización OLE para Word 97
Si se produce en el ejemplo que funciona con Word 6.0 o Word 95 y el siguiente mensaje de error, los datos en el campo general de la tabla se insertan con Word 97:
Código de excepción IDispatch OLE 269 desde Microsoft Word: Microsoft Word Err = 1269 - Word no puede modificar el objeto...
Cambiar el segundo ejemplo utilizando Visual FoxPro 5.0 Service Pack 2 y Word 97 para pasar los datos a Word.

Para utilizar el código como está, necesitará crear una tabla con nombres de campo como los siguientes:
   Field Name      Type                    Width   ----------      ---------               -----   FIRST           Character                15   LAST            Character                15   ADDRESS         Character                25   CITY            Character                15   STATE           Character                 2   ZIPCODE         Character                 5   GEN             General                   4				
después de generar la tabla y agregar algunos datos a cada campo de caracteres, asegúrese de que cada campo general se ha rellenado haciendo doble clic en el campo general para abrirlo y seleccionando el EDIT - opciones de menú INSERT OBJECT. Con el botón "Crear nuevo" seleccionado, seleccione "Microsoft Word Document" en el cuadro de lista "Tipo de objeto" y escriba algunos datos en Word. Cierre Word para guardar los datos en el campo general.

El código siguiente funciona con Visual FoxPro 3.x, 5.x, 6.0, 7.0, 8.0 y 9.0 cuando se utiliza Word 6.0, Word 95 o Office Word 2003. Coloque el código siguiente en un archivo de programa (.prg) y ejecútelo.
   ************* Beginning of code. ****************   PUBLIC oWord    oWord = CREATEOBJECT("Word.Basic")    WITH oWord       .AppShow        && Makes Word Visible       .FileNewDefault && Opens up blank Word document       * The following Insert commands place the FoxPro fields into       * the Word document. You can change these commands to place       * any text in the document.       * Ensure that the table is already open. If only a portion       * of records are to be printed, change the EOF() to a certain       * number so that all of the records do not get processed.       * Example: DO WHILE RECNO() < 10       GO TOP       DO WHILE NOT EOF()          .Insert("Record: "+ALLTRIM(STR(RECNO())))            && The above line shows the record number.          .InsertPara          .InsertPara          .Insert(ALLTRIM(first)+" "+last)   && Field in the table.          .InsertPara          .Insert(address)          .InsertPara          .Insert(ALLTRIM(city)+", "+state+"  "+zipcode)          .InsertPara          .InsertPara          .Insert("Contents of the General Field:")          .InsertPara          .InsertPara           KEYBOARD "{ctrl+c} {ctrl+w}" && Copies and closes the general                                        && field to the clipboard.           MODIFY GENERAL gen           && This has to be after the                                        && KEYBOARD command.          .EditPaste          .WordLeft(1,1)          .EditObject("0")          .EditSelectAll          .Editcopy          .FileClose          .EditClear          .EditPaste          .InsertPara          .InsertPara          .InsertPara           SKIP                     && Move the record pointer to                                    && the next record.       ENDDO       .FileSaveAs("c:\mydoc.doc")  && Saves the Word document as                                    && Mydoc.doc.       .FilePrint       .AppClose    ENDWITH   **************** End of code. ****************				
si utiliza Word 97, Service Pack 2 de Visual FoxPro 5.0 y Visual FoxPro 6.0 son las versiones sólo que este código se ejecuta correctamente. Coloque el código siguiente en un archivo de programa (.prg) y ejecútelo.
   **************** Beginning of code. **********   PUBLIC oWord   oWord = CREATEOBJECT("Word.Application")   WITH oWord      .visible=.t.       && Makes Word Visible    .documents.add     && Opens up blank Word document      * The following Insert commands place the FoxPro fields into      * the Word document. You can change these commands to place      * any text in the document.      * Ensure that the table is already open. If only a portion      * of records are to be printed, change the EOF() to a certain      * number so that all of the records do not get processed.      * Example: DO WHILE RECNO() < 10      GO TOP      DO WHILE NOT EOF()         .Selection.TypeText("Record: "+ALLTRIM(STR(RECNO())))           && The above line shows the record number.         .Selection.TypeParagraph         .Selection.TypeParagraph         .Selection.TypeText(ALLTRIM(first)+" "+last)&& Field in the table.         .Selection.TypeParagraph         .Selection.TypeText(address)         .Selection.TypeParagraph         .Selection.TypeText(ALLTRIM(city)+", "+state+"  "+zipcode)         .Selection.TypeParagraph         .Selection.TypeParagraph         .Selection.TypeText("Contents of the General Field:")         .Selection.TypeParagraph         .Selection.TypeParagraph          KEYBOARD "{ctrl+c} {ctrl+w}" && Copies and closes the general                                       && field to the clipboard.         MODIFY GENERAL gen           && This has to be after the                                       && KEYBOARD command.         .Selection.Paste         .Selection.MoveLeft         x = .ActiveDocument.Shapes.Count         .ActiveDocument.Shapes(x).OLEFormat.Edit         .Selection.Wholestory         .Selection.Copy         .ActiveDocument.Close         .Selection.Delete         .Selection.EndKey(6)         .Selection.Paste         .Selection.TypeParagraph         .Selection.TypeParagraph         .Selection.TypeParagraph          SKIP                     && Move the record pointer to      ENDDO         .ActiveDocument.SaveAs("Mydoc.doc")  && Saves the Word document as                                              && Mydoc.doc.         .Application.PrintOut   ENDWITH         .Quit**************** End of code ****************				
Referencias
Para obtener más información sobre Word Basic y Visual Basic para aplicaciones (VBA), busque en el archivo de Ayuda de Word.
Word OLE

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 175173 - Última revisión: 02/12/2007 19:08:32 - Revisión: 4.4

Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft Visual FoxPro 3.0b Standard Edition, Microsoft Visual FoxPro 5.0 Standard Edition, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft Visual FoxPro 7.0 Professional Edition, Microsoft Visual FoxPro 8.0 Professional Edition, Microsoft Visual FoxPro 9.0 Professional Edition

  • kbmt kbautomation kbcode kbdesigner kbhowto kbinterop KB175173 KbMtes
Comentarios
(m);