Vistas Remotas MySQL desde VFP

424 views
Skip to first unread message

Irwin Rodriguez

unread,
Feb 4, 2015, 8:30:46 AM2/4/15
to publice...@googlegroups.com, mundovisualfoxpro@googlegroups com
Saludos Colegas,

Necesito hacer una consulta digamos que cada 2 o 3 segundos a un servidor MySQL. Obviamente no es una buena práctica por cuestiones de velocidad y concurrencia de usuarios (unos 60 apróx.).

Estoy pensando más bien en la posibilidad de crear una vista y hacer la consulta sobre ella ya que en tería estará en la carpeta local de cada terminal y asi es maás rápida la consulta.

La pregunta es:

1. Es posible crear una vista desde VFP y que se actualice a medida que se van insertando o eliminando los registros en la tabla del Servidor.

Estuve el siguiente ejemplo​ pero no consegui el resultado deseado.

1. Creo una tabla articulos en el Servidor.
2. Desde VFP creo el siguiente comando:

lcSql = "CREATE VIEW v_articulo as SELECT * FROM articulo"
SQLExec(oConex.getConnection(), lcSql)
lcSql = "SELECT * FROM v_articulo"
SQLExec(oConex.getConnection(), lcSql, "articulo")
BROWSE

Tengo el Browse de la vista pero lo tengo como un cursor.

Creo y/o elimino algun registro en la tabla y cuando hago un browse los registros no se ven afectados.

Algunas sugerencias?

Desde ya muchas gracias!



--
Ing. Irwin Rodríguez
 
Consultor Informático
 
"Las ideas son fuerzas intangibles, pero tienen más poder que el cerebro físico de donde nacen. Tienen el poder de seguir viviendo, aún después de que el cerebro que las ha creado haya regresado al polvo"

NOTA: La información mostrada en este mensaje es de caracter Confidencial y está dirigida unicamente a los contactos señalados en el encabezado; si el lector de este correo no es el destinatario del mismo, se le notifica que cualquier copia o distribución queda totalmente prohibida. Si usted ha recibido este mensaje por error, por favor notifique inmediatamente al remitente por este mismo medio y bórrelo de su sistema.

Erwin Vera

unread,
Feb 4, 2015, 9:04:21 AM2/4/15
to mundovis...@googlegroups.com

Si envías la secuencia completa, tal vez te podamos ayudar!

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Irwin Rodriguez

unread,
Feb 4, 2015, 9:15:00 AM2/4/15
to mundovisualfoxpro@googlegroups com
Hola Erwin,

Pues en realidad no he comenzado a crear nada de código, solamente tengo un PRG donde me conecto a la BD test de MySQL y creo la vista con los comandos que publiqué.

Algo asi:


La conexión:

    cHost        = "localhost"
    cDriver      = "{MySQL ODBC 3.51 Driver}"
    cDataBase    = "test"
    cPort        = "3306"
    cUser        = "root"
    cPassWord    = "1234"
    cOption      = "16"

        pcStringCon = "Driver=" + This.cDriver
        pcStringCon = pcStringCon + ";Port=" + This.cPort
        pcStringCon = pcStringCon + ";Server=" + This.cHost
        pcStringCon = pcStringCon + ";Database=" + This.cDataBase
        pcStringCon = pcStringCon + ";Uid=" + This.cUser
        pcStringCon = pcStringCon + ";Pwd=" + This.cPassWord
        pcStringCon = pcStringCon + ";Option=" + This.cOption
        This.nConnectionHandle = Sqlstringconnect(pcStringCon)
        If (This.nConnectionHandle < 0)
            =Aerror(SQLException)
            Messagebox("Error No: "+Alltrim(Str(SQLException[1])) + Chr(13)+"Message: " + SQLException[2],"Error MySQL")
        Else
        Endif

La consulta:


lcSql = "CREATE VIEW v_articulo as SELECT * FROM articulo"
lnOutPut = SQLExec(nHandle, lcSql)


lcSql = "SELECT * FROM v_articulo"
lnOutPut = SQLExec(nHandle, lcSql, "articulo")

select articulo
browse

Eso es todo.

Lo que quiero saber es si existe la forma de tener la vista actualizada segun se modifique la tabla articulo.

Saludos!

Antonio Meza

unread,
Feb 4, 2015, 10:03:00 AM2/4/15
to publice...@googlegroups.com, mundovis...@googlegroups.com
Hola

Porque no usas FoxyDb

Te conectas al servidor realizas la consulta a la tabla las veces que necesites de una forma mas fácil.

En cuanto a usar una vista remota de VFP contra usar foxydb, tendrás mejor rendimiento en foxydb, esto si por ejemplo si solo quieres obtener o realizar una consulta en la que no vas a modificar los datos, entonces foxydb genera una transacción de solo lectura lo que hace que sea mas rápido el select, en cambio con la vista remota desconozco si hace lo mismo.

Seria interesante comentes cual es tu necesidad real de consultar cada 2 o 3 segundos los cambios en una tabla, a lo mejor alguien mas haya tenido esa necesidad y te den opciones.

saludos
Antonio Meza

Jean Pierre Adonis De La Cruz Garcia

unread,
Feb 4, 2015, 10:06:01 AM2/4/15
to publice...@googlegroups.com, mundovis...@googlegroups.com
Excelente tu creacion mi estimado, es un gran aporte a los que necesitan ese tipo de Conexion, se agradece muchisimo.

Felicitaciones

Espero probarlo dentro de poco y hacer algunas pruebas.

Irwin Rodriguez

unread,
Feb 4, 2015, 11:12:44 AM2/4/15
to mundovisualfoxpro@googlegroups com
Hola Antonio,

La necesidad es la siguiente:

1. Una aplicacion que funcione tipo chat.

Ya había realizado una hace algún tiempo y lo hice con una tabla que me almacenaba:

1. El remitente
2. El recipiente
3. Fecha
4. Mensaje

La tabla era una DBF y pues cada 2 o 3 segundos realizaba la consulta para ver si había algún mensaje para mostrar.

En DBF y dentro de una LAN no hay funciona perfecto.

El problema es que ahora son 7 empresas en distintas localidades y necesitan un chat donde se comuniquen alrededor de 100 usuarios.

La metodología puede funcionar pero me parece que la tabla de mensajes se va a colapsar por tantas concurrencias.

Por eso estaba pensando en la posibilidad de crear una vista en VFP que se mantenga actualizada, asi mis consultas serían sobre el temporal en vez de viajar al servidor.

Saludos!



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages