Hola invitado         02 Sep, 2010 - 04:43
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Automatizando Visual FoxPro lecturas 14811
 Enviado por Luis María Guayán en Viernes, 27 Enero, 2006
Automation Así como podemos controlar otras aplicaciones desde Visual FoxPro mediante automatización, también podemos controlar Visual FoxPro desde otras aplicaciones utilizando a VFP como un servidor de automatización.

Automatizando Visual FoxPro

Luis María Guayán Por Luis María Guayán, Tucumán, Argentina


Existen muchos escritos sobre como automatizar aplicaciones como Excel, Word, Outlook, etc. desde Visual FoxPro como cliente de automatización, pero quizás algo que muchos desconozcan, es que Visual FoxPro también es un servidor de automatización. ¿Que quiero decir con esto?. Que cualquier aplicación que permita automatización puede crear una instancia de Visual FoxPro y ejecutar comandos de Visual FoxPro.

Comenzar con lo conocido

Para comenzar utilizaremos a Visual FoxPro como cliente, como lo hicimos ya muchas veces, y crearemos una nueva instancia de Visual FoxPro con la siguiente sentencia:

loVFP = CREATEOBJECT("VisualFoxPro.Application")

Una vez creado el objeto Application de Visual FoxPro, con la ayuda de IntelliSense, una ventana emergente nos mostrará las Propiedades y los Métodos de este objeto al escribir lo siguiente:

loVFP.    

Si en la PC tenemos instaldas mas de una versión de Visual FoxPro, podemos especificar cual versión vamos a instanciar, como lo muestra el siguiente código:

*-- Visual FoxPro 9.0
loVFPx = CREATEOBJECT("VisualFoxPro.Application.9")
? loVFPx.Version
loVFPx.Quit

*-- Visual FoxPro 8.0
loVFPx = CREATEOBJECT("VisualFoxPro.Application.8")
? loVFPx.Version
loVFPx.Quit

*-- Visual FoxPro 7.0
loVFPx = CREATEOBJECT("VisualFoxPro.Application.7")
? loVFPx.Version
loVFPx.Quit

*-- Visual FoxPro 6.0
loVFPx = CREATEOBJECT("VisualFoxPro.Application.6")
? loVFPx.Version
loVFPx.Quit

Conocer los métodos y las propiedades

Algunos de los métodos disponibles del objeto Application de Visual Fox y que podemos ejecutar son:

  • DoCmd

Ejecuta un comando de Visual FoxPro para la instancia de la aplicación Visual FoxPro.

loVFP.DoCmd("USE (HOME(2)+'Northwind\Customers')")
  • Eval

Evalua y retorna el resultado de una expresión en la instancia de la aplicación Visual FoxPro.

? loVFP.Eval("CompanyName")
  • SetVar

Crea una variable y le asigna un valor en la instancia de la aplicación Visual FoxPro.

loVFP.SetVar("lcNombre","PortalFox")
? loVFP.Eval("lcNombre")
  • RequestData

Retorna una matriz que contiene los datos de una tabla abierta en la instancia de la aplicación Visual FoxPro.

laArray = loVFP.RequestData("Customers",2)
DISPLAY MEMORY LIKE laArray
  • DataToClip

Copia como texto al portapapeles un conjunto de registros de una tabla abierta en la instancia de la aplicación Visual FoxPro.

loVFP.DataToClip("Customers",2,3)
? ClipText
  • Quit

Finaliza la instancia de la aplicación Visual FoxPro.

loVFP.Quit

Algunas de la propiedades del objeto Application de VFP y que podemos consultar o modificar son:

? loVFP.Version 
? loVFP.StartMode
loVFP.Caption = "Instanciado de otra aplicacion"
loVFP.Visible = .T.

La variable del sistema _VFP hace referencia al objeto aplicación de la instancia actual de Visual FoxPro, y podemos ejecutar sus métodos y modificar sus propiedades:

_VFP.Caption = "Instancia Actual de VFP"
_VFP.DoCmd("_Screen.BackColor = RGB(255,255,192)")
? _VFP.Version

Instanciando Visual FoxPro desde Excel

El siguiente ejemplo, nos muestra como podemos crear una instancia de Visual FoxPor desde Excel, abrir una tabla, e importar sus datos en una hoja de Excel.

Copie el siguiente código escrito en VBA (Visual Basic for Applications), insertelo en un módulo de Excel y ejecutelo:

Sub ImportarDeVFP()
   Dim loVFP As Object, lnReg As Integer
   Set loVFP = CreateObject("VisualFoxPro.Application")
   loVFP.DoCmd ("OPEN DATABASE (HOME(2)+'Northwind\Northwind')")
   loVFP.DoCmd ("SELECT * FROM Customers INTO CURSOR MiCursor")
   lnReg = loVFP.DataToClip("MiCursor", , 3)
   Range("A1").Select
   ActiveSheet.Paste
   Cells.Select
   Cells.EntireColumn.AutoFit
   loVFP.Quit
   Set loVFP = Nothing
   MsgBox (lnReg & " Registros copiados")
End Sub

Para terminar

Con este último ejemplo podemos ver que a veces es mas simple programar otra aplicación para controlar a Visual FoxPro y obtener datos, que hacerlo todo desde Visual FoxPro. Uds. verán el camino a tomar para dar solución a los requerimientos de los usuarios.

Hasta la próxima.

Luis María


 Versión imprimible  
Automatizando Visual FoxPro | Entrar/Crear una cuenta | 2 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Automatizando Visual FoxPro


por rodrigo_garcia en 01 Abr, 2006 - 02:28
(Información del usuario  | Enviar un mensaje http://)
tube muchas satisfacciones desarrollando modulos basandome en el codigo que enviaste pero en algunas PC se traba.
busqueda = "SEEK '" & bfc & "'"
busqueda1 = "SEEK '" & fcb_clie & "'"
Set loVFP = CreateObject("VisualFoxPro.Application.9")
loVFP.DoCmd ("SET EXCLUSIVE OFF")
loVFP.DoCmd ("Use F:\GESTION\MOV_ARTI")
loVFP.DoCmd ("SET ORDER TO COMPROB")
loVFP.DoCmd (busqueda)
loVFP.DoCmd ("browse")
queda esperando y da error de que escel esta esperando que una aplicacion termine una accion ole. si corto con control+alt+del tengo que terminar el proceso vfp9.exe para tener control con excel. al depurar el proceso queda en la linea loVFP.DoCmd ("browse")
De ser posible subsanar este inconveniente me gustaria que me ayuden. Desde ya muchas gracias




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.