Manejo de FoxyDb en una variable publica

118 views
Skip to first unread message

Favio Lovera

unread,
Apr 16, 2020, 7:07:32 PM4/16/20
to Comunidad de Visual Foxpro en Español
Buenas estoy creando una variable publica, e instancio la librería FoxyDb como muestro en el código.

Public PcServerFoxyDb
PcServerFoxyDb = NEWOBJECT("foxydb", "programas\foxydb.prg")

* Propiedades de Conexión
* Driver Odbc
PcServerFoxyDb.handle_Driver   = PcServerFoxyDb.driver_Mysql_51
* Ip del servidor local
PcServerFoxyDb.handle_Server   = LcIpServidor
* Usuario del Servidor
PcServerFoxyDb.handle_User    = LcUser
* Password del servidor
PcServerFoxyDb.handle_Password = LcPass
* Base de datos del servidor
PcServerFoxyDb.handle_Database = "sisadinod30"
* Puerto del Servidor con valor predeterminado
PcServerFoxyDb.handle_Port    = "3306"

* Configurar FoxyDB
WITH PcServerFoxyDb
* Depurar y Errores SQL
.error_Show   = .T. && Mostrar Errores SQL devueltos por Aerror()

* Conexión
.handle_Network   = .F. && Si mantiene permanente la conexión
.handle_Reconnection  = .T. && Si se intenta reconectar al servidor
.handle_Verify   = .F. && Si Verifica el estado de la conexión al servidor
* Motor de Base de datos
.engine   = PcServerFoxyDb.mySql
ENDWITH

mi problema es el siguiente, cuando hago una consulta (en mi diseño funciona bien), en el momento de usar el sistema (produccion), me da el siguiente "no se puede tener acceso al cursor". Cual seria mi problema??

TEXT TO LcSQL TEXTMERGE NOSHOW
select se_nombre as nombre,
   se_codigo as codigo,
   concat('Personas: ',se_personas) as personas,
   concat('Cuota: '   ,se_importe)  as importe 
   from seguro order by 1
 ENDTEXT
 IF PcServerFoxyDb.SQL(LcSQL, 'SQLCboSeguro')
    SELECT SQLCboSeguro
    GOTO TOP
    IF RECCOUNT()>0
       WITH thisform.cboseguro
          .rowsourcetype = 2
          .columncount   = 4
          .columnwidths  = '250,50,75,85'
          .rowsource     = 'SQLCboSeguro'
       ENDWITH
    ENDIF
 ENDIF

Jorge Galván Pérez

unread,
Apr 16, 2020, 7:38:20 PM4/16/20
to Comunidad de Visual Foxpro en Español
PcServerFoxyDb = NEWOBJECT("foxydb", "programas\foxydb.prg")

_SCREEN.ADDPROPERTY("PcServerFoxyDb ", PcServerFoxyDb)

asi tienes una propiedad en el _screen que sera publica en todo tu proyecto y no usarias variables publicas

Antonio Meza

unread,
Apr 16, 2020, 7:41:13 PM4/16/20
to Comunidad de Visual Foxpro en Español
Si usas sesiones privadas de datos en los formularios no te va a funcionar el usar una variable publica.

Te recomiendo usar una propiedad del formulario y ahí crear el objeto de foxydb, de esa forma no tendrás problemas con sesiones de datos.

saludos
Antonio Meza

Adolfo Leon Quintero Hoyos

unread,
Apr 21, 2020, 6:56:04 PM4/21/20
to Carlos lorza
Antonio le hago como tu nos indicas y nada de nada, el entra y se conecta pero al tratar de leer una tabla y hacer broser el visual foxpro encuentra error del programa y se sale.
Creo la propiedad  oDb

En el Load

Thisform.oDb = NEWOBJECT("foxydb","foxydb30\foxydb.prg")

Thisform.oDb.handle_Shared = oDb.handle && usando una conexión Compartida

IF Thisform.oDb.Connect()         && Conectamos una conexión Compartida

   Thisform.oDb.Sql("select * from tb_empresas", "tb_empresas")

   SELECT tb_empresas

   BROWSE

   WAIT WINDOWS "Conexión al Servidor Lograda"

ELSE

   WAIT WINDOWS "Error de Conexión al Servidor, Código de Error:" + str(Thisform.oDb.error_Code)

ENDIF

SI LA COLOCO ASI FUNCIONA EN EL FORMULARIO

METODO LOAD

This.oDb2 = NEWOBJECT("foxydb","c:\zzz.proyecto2020\foxydb30\foxydb.prg")
This.odb2.handle_Network = .f.
This.odb2.handle_Reconnection = .t.
This.odb2.handle_Verify = .f.
This.odb2.error_Show = .t.
*odb.handle_Shared = odb.HaNDLE
This.odb2.engine = odb.mariaDb
This.odb2.handle_driver = odb.driver_MariaDb
This.odb2.handle_server = "209.126.2.131"
This.odb2.handle_user = "root"
This.odb2.handle_password = "******"
This.odb2.handle_database = "******"
This.odb2.handle_port = "3307"

IF Thisform.oDb2.Connect() && Conectamos una conexión Compartida
   *thisform.oDb.sql('Call sp_consulta_interfaz_defecto();','CT_Interfaz')
   Thisform.oDb2.Sql("select * from tb_empresas", "tb_empresas")
   SELECT tb_empresas
   BROWSE
ELSE
   WAIT WINDOWS "Error de Conexión al Servidor, Código de Error:" + str(Thisform.oDb2.error_Code)
ENDIF

PERO AL SEGUIR LEYENDO MAS TABLAS DE PARAMETROS NO PUEDE LEER EL CURSOR

 If thisform.oDb2.sql('Call sp_consulta_interfaz_defecto();','CT_Interfaz')
     vlInterfazId = CT_Interfaz.IdInterfaz
     vpNombreUltimoUsuario = CT_Interfaz.NombreUltimoUsuario
Else
    Wait WINDOW 'ERROR INTERFAZID'
    *---
    On Error
    Push Key Clear
   On ShutDown
   Clear Windows
   Clear Event
   Set Sysmenu To Default
   Cancel
Endif


--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/7b420203-8707-4c70-bdff-8bf3208c9331%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages