Integración de COM en VFP

915 views
Skip to first unread message

Daniel Ruben Beaumont Morales

unread,
Apr 3, 2014, 5:11:54 PM4/3/14
to publice...@googlegroups.com
Hola a todos. 

Espero haber hecho el hilo en el lugar correcto. Mi situación es la siguiente. 

Estoy haciendo una integración de un software comercial llamado Contpaq Bancos con VFP, y el software trae un SDK que incluye algunas DLL y lo que me atañe, un ejecutable COM que trae los metodos y calses que requiero usar. 

La verdad esto ya lo logré hacer en Visual basic, y es muy fácil, el ejecutable se agrega al proyecto como una referencia y listo, solo hay que hacer uso de el. 

Pero en VFP la verdad no le encuentro el modo. Soy nuevo en VFP, por lo que estoy aprendiendo al paso, ya logre cargar en Component Gallery como Activex, y desde el Object Browser puedo abrirlo y ver su contenido.... Hasta aqui todo bien... 

Se que puede ser una pregunta necia pero, ¿como lo uso en el proyecto? todo lo que he leído de objetoc COM para VFP trata de como hacerlos, no de como usarlos. No logro usar metodos o clases del COM. 

Si alguien me puede dar el inicio de esto ya yo veré como le sigo, pero la verdad ya he leído dos libros y muchos foros y nada, espero acá puedan ayudarme.

francisco prieto

unread,
Apr 4, 2014, 6:30:19 AM4/4/14
to publice...@googlegroups.com
Veamos...

Es una DLL o es un OCX?

Saludos,

Pancho
Córdoba

Fernando D. Bozzo

unread,
Apr 4, 2014, 11:11:14 AM4/4/14
to publice...@googlegroups.com
Hola Daniel:

En general, en FoxPro se instancia igual que en Visual Basic, con createobject()

obj = createobject("TuObjetoRegistrado")

El nombre que registre lo podés buscar en el registro de Windows, en HKEY_LOCAL_MACHINE\Classes, y el nombre que figure ahi es el que podés usar.


Saludos.-

Allan Raúl Acuña

unread,
Apr 4, 2014, 12:59:17 PM4/4/14
to publice...@googlegroups.com
Porque no haces la conexion directa con la base de datos del Contpaq, si es SQL server Express, yo lo he hecho sin problemas.

Saludos cordiales.

Lic. Allan Raúl Acuña
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 831 8191      
www.NicEasySoft.org
Managua, Nicaragua
Centroamérica



From: fajp...@gmail.com
Date: Fri, 4 Apr 2014 07:30:19 -0300
Subject: Re: [vfp] Integración de COM en VFP
To: publice...@googlegroups.com

Daniel Ruben Beaumont Morales

unread,
Apr 5, 2014, 4:32:10 PM4/5/14
to publice...@googlegroups.com
Gracias por sus respuestas. En orden de llegada les omento:

Francisco: No es ninguna de las dos, ciertamente trae varias DLL pero el COM que se usa finalmente es un EXE. NO encontré modo alguno de registrar un EXE al estilo del regsvr32. 

Fernando: Como decía a Francisco no he podido registrar el COM, por lo que no aparece en el registro, y te comento que en visual basic no tengo necesidad de crear un objeto, simplemente creo una variable y al definir el tipo estan detectados los tipos contenidos en el COM siempre y cuando haya dado de alta la referencia en el proyecto.

Allan: No se hace de ese modo por que en realidad el SDK te ahorra mucho trabajo en el sentido de reglas de carga y manejo de la base de datos, aunque si es restrictivo con lo que puedes ver y hacer, para lo que el sistema requiere es adecuado.

El asunto es que yo estoy haciendo un módulo para cargar información al Bancos de Contpaq, y el sistema principal que funciona como auditor para limpiar la información esta en FoxPro.

Ya logré que FoxPro me muestre en el Component Gallery el COM, hay que agregarlo como Activex, y ya logre que al declarar una variable al darle "AS" me muestre el tipo SDKCONTPAGLib y sus propiedades (Esto en "Types Libraries"), pero ahora no se como ejecutar sus metodos!!!

Les adjunto el ejemplo que existe y en el que me he basado para tratar de transportarlo a FoxPro... esto ya lo repliqué en VB6 incluso estoy al límite de hacer una DLL en VB6 que sea la que interactue con el COM y a su vez la DLL fuera usada por FoxPro.

Saludos!
DemoconexionContPAQi_SDKCOM.xls

narcizo norzagaray

unread,
Apr 5, 2014, 5:26:41 PM4/5/14
to publice...@googlegroups.com

Yo me conecto directo al contpaqi y le saco la informacion pa cruzarla con mis sistemas

Daniel Ruben Beaumont Morales

unread,
Apr 7, 2014, 11:31:14 AM4/7/14
to publice...@googlegroups.com
Hola Narcizo. Podrias definirme ¿a que te refieres con que te conectas directo con el Contpaqi?, y de ser podible un ejemplo de esa conexión, ya lo demás me invento como solucionarlo.

Saludos!

Daniel Ruben Beaumont Morales

unread,
Apr 7, 2014, 11:31:42 AM4/7/14
to publice...@googlegroups.com, narcizo.n...@gmail.com
Hola Narcizo. Podrias definirme ¿a que te refieres con que te conectas directo con el Contpaqi?, y de ser podible un ejemplo de esa conexión, ya lo demás me invento como solucionarlo.

Saludos!

Daniel Ruben Beaumont Morales

unread,
Apr 7, 2014, 12:16:24 PM4/7/14
to publice...@googlegroups.com, narcizo norzagaray
Siguiendo el hilo y por si alguien me puede ayudar, he conseguido que foxpro me muestre las propiedades del COM de Contpq Bancos cuando declaro una variable, ahora pase el código de ejemplo para iniciar sesión en el servidor desde el SDK, a continuación lo coloco:


LOCAL gSdkSesion as SDKCONTPAQNGLib.TSdkSesion          <------Aqui ya me reconoce el COM y puedo usar sus tipos
 
&&Inicia conexión con el SDK
If gSdkSesion.conexionActiva = 0 Then                                     
gSdkSesion.iniciaConexion
EndIf
    
&&Evalua si se pudo establece conexión para solicitar se registre el usuario
If gSdkSesion.conexionActiva = 1 And gSdkSesion.ingresoUsuario = 0 Then
gSdkSesion.firmaUsuario
EndIf

&&Abre la empresa si hay conexión y el usuario registrado
If gSdkSesion.conexionActiva = 1 And gSdkSesion.ingresoUsuario = 1 Then
gSdkSesion.abreEmpresa(DirectorioAlias)
EndIf

El problema surge ahora por que al querer usar una propiedad o metodo me dice que la variable (gSdkSesion en este caso) no es un Objeto.

Como puedo acceder a los métodos y propiedades sería mi pregunta....

Gracias de antemano...

Saludos!

Fer

unread,
Apr 7, 2014, 1:38:18 PM4/7/14
to publice...@googlegroups.com
Hola Daniel:

Y es lógico lo que te pasa, porque lo que hacés con el LOCAL variable as DefinicionObjeto sirve solamente para que Intellisense te reconozca las propiedades y métodos del objeto, pero internamente hace un CreateObject() para ello.

Lo que te falta hacer es lo que te puse al principio de todo:


obj = createobject("SDKCONTPAQNGLib.TSdkSesion")


Saludos.-


Fer

unread,
Apr 7, 2014, 1:39:00 PM4/7/14
to publice...@googlegroups.com
Para tu caso, la variable sería:

gSdkSesion = createobject("SDKCONTPAQNGLib.TSdkSesion")

Daniel Ruben Beaumont Morales

unread,
Apr 7, 2014, 2:43:19 PM4/7/14
to publice...@googlegroups.com, fdb...@gmail.com
Hola Fer.

Ya había probado yo con el createobject() pero me da un error "Class definition SDKCONTPAQNGLib.TSdkSesion" is not found. Lo que me regresaría a mi problema original.

Saludos.

Fernando D. Bozzo

unread,
Apr 7, 2014, 4:24:23 PM4/7/14
to publice...@googlegroups.com, fdb...@gmail.com
Lo que no entiendo entonces es cómo sí te funciona el LOCAL var as Obect. Es la primera vez que veo algo así.

¿Se puede bajar ese componente de algún lado, o es de pago?

Fer

unread,
Apr 7, 2014, 4:35:42 PM4/7/14
to publice...@googlegroups.com, Fernando D. Bozzo
Daniel, ¿podrías abrir el registro de Windows y buscar en HKEY_CLASSES_ROOT la clave "SDKCONTPAQNGLib" escribiendo sobre la parte izquierda?

Es para saber si está registrada ahí o no.


Saludos.-

Daniel Ruben Beaumont Morales

unread,
Apr 7, 2014, 5:50:35 PM4/7/14
to publice...@googlegroups.com, fdb...@gmail.com
La verdad la documentación es poca sobre el SDK, por lo menos en lo técnico... y es muy dificil llegar a el por medios normales por que Contpaq en realidad no trata directo con el usuario final sea tecnico o no, si no que lo hacen los distribuidores del software, pero estos a su vez no estan metidos en esto, ellos se van más a lo que el usuario final requiere sobre el Sistema como tal, no para pegarle subsistemas.

Pero por esos otros medios logre obtener algunas cosas. las adjunto a ver que se puede hacer.

Saludos.

Adrian Del Angel García

unread,
Jun 17, 2014, 10:48:30 PM6/17/14
to publice...@googlegroups.com, narcizo.n...@gmail.com
Buen día Daniel, pudiste resolver tu problema de conectividad con Contpaq i (SDK) a traves de VFP9 ?

Daniel Ruben Beaumont Morales

unread,
Jun 18, 2014, 9:49:52 AM6/18/14
to publice...@googlegroups.com
Buen día.

No pude resolverlo desde VFP9 y lo llevé a Visual Studio 2013. ¿Acaso tienes tu la misma duda o la solución?

Saludos 

Hector nuñez

unread,
Sep 8, 2015, 8:44:26 PM9/8/15
to Comunidad de Visual Foxpro en Español
yo estoy en la misma situación pero estoy utilizando lo siguiente

SET DEFAULT TO "C:\Program Files\Compac\SDK"
gSdkPoliza = createobject("SDKCONTPAQNG.TSdkPoliza")
gSdkSesion = createobject("SDKCONTPAQNG.TSdkSesion")
gSdkSesion.iniciaConexion()
gSdkSesion.firmaUsuario
gSdkSesion.abreEmpresa("ctempresa1")
gSdkPoliza.setSesion(gSdkSesion)
 gSdkPoliza.Tipo = 1
  gSdkPoliza.Numero = 20
  gSdkPoliza.Clase = .t.
  gSdkPoliza.Concepto = ""
  gSdkPoliza.Diario = 0
  gSdkPoliza.SistOrigen = 11
  gSdkPoliza.Fecha = DATE()
gSdkPoliza.crea()


Espero te sirva es tan simple como esto

Gil Gzz

unread,
Jun 3, 2022, 7:16:09 AM6/3/22
to Comunidad de Visual Foxpro en Español
Que tal todos!

ahora me toca un proyecto donde el objetivo es timbrar carta porte a travez de la SDK de contpaqi, segui el codigo de hec...@gmail.com y logro comunicacion, cambian algunas instrucciones imagino por el tema de que la SDK de contpaqi se va actualizando.... alguien ha logrado timbrado a travez de la sdk de contpaqi? 

He logrado comunicarme con la sdk pero no logro el fin anexo imagen de lo que logro ver y puedo usar desde fox


clases_contpaqi.png

esto por codigo

clases_contpaqi_2.png



Informacion oficial de la SDK de contpaqi donde puede hacer el timbrado de carta porte...


saludos a todos!!
Reply all
Reply to author
Forward
0 new messages