Requery a la tabla con MySQL

422 views
Skip to first unread message

ZeRoberto

unread,
Mar 29, 2012, 11:52:08 AM3/29/12
to publicesvfoxpro
Hola a todos, estoy haciendo mis primeros pininos en MySQL y queria saber como le puedo hacer para que un tabla se actualize luego de hacer un insercion, actualizacion o eliminacion.
 
Resulta que abro la tabla
 
SQLExec(nHandle, "SELECT * FROM miTabla", "miTabla")
 
Y esta tabla esta enlazado a un grid
 
Luego tengo un boton insertar
 
SQLExec(nHandle, "INSERT INTO miTabla (mivalor) VALUES (?lcmivalor)")
 
Ahora de aca como hago para que los cambios se muestren en el grid
 
yo que estoy haciendo es volver a ejecutar el SELECT.
 
Vi en otros programas que tienen una tabla con el nombre de la tabla y un sufijo AUX
 
Jalan todo del servidor a esa tabla y luego van actualizando los 2 en paralelo
 
Por ejemplo
 
SQLExec(nHandle, "INSERT INTO miTabla (mivalor) VALUES (?lcmivalor)")
Select miTabla_Aux
Append Blank
Replace mivalor With lcMiValor
 
 
La pregunta es como se debe trabajar con estos tipos de base de datos?
 
Saludos
 
 

extremo

unread,
Mar 29, 2012, 12:24:43 PM3/29/12
to Comunidad de Visual Foxpro en Español
Yo hago lo mismo que tu

1 Modifico mis cursores
2 grabo
3 Vuelvo a cargar mis cursores con la nueva data haciendo los select
pertinentes

Bendiciones

ZeRoberto

unread,
Mar 29, 2012, 12:31:30 PM3/29/12
to publice...@googlegroups.com
Hola extremo
 
Quize hacer un clase cursorsql con custom, pero el problema sucede en los formularios con sesion de datos privados, parece que el control custom tiene su propia sesion de datos, asi que le agregue una funcion setdatasession y funcionaba asi
 
goSQL.SetDataSession(ThisForm.DataSessionID)
goSQL.SQLExec("SELECT * FROM miTabla", "miTabla")
 
Pero el problema de esto es que me daba un error de VFP me salia no se puede leer o escibir la direcion de memoria x126x545, ha veces no me salia el mensaje de error y solo se notaba porque algunos botones de mi formulario desaparecian o simplemente el vfp se cerraba.
 
Como lo manejan uds
 
Haciendolo directo con SQLConnect() SQLExe()?
 
o ya solucionaron el problema que tengo sobre la clase custom
 
Saludos

extremo

unread,
Mar 29, 2012, 1:40:25 PM3/29/12
to Comunidad de Visual Foxpro en Español
Hoa ZeRoberto

La verdad es que nunca he trabajado con sesion de datos en los
formularios, los he visto pero jamas me ha llamado la atencion, ni
siquiera para ver como funciona. Bueno yo todo lo hago haciendo con
sqlexec() ... te dire como es mi forma de trabajo.

tomaremos como ejemplo un fpormulario simple con una sola tabla de
trabajo llamada usuario.

en el load hago lo siguiente:

LOAD()
ThisForm.asigMem(-1)

en el boton grabar:
BotonGrabar.Click()
...grabo todo lo que necesito mas las validaciones necesarias
... al final de evento coloco lo sigioente:
ThisForm.asigMem(nId)

Boton Buscar lo mismo

BotonBUSCAR.Click()
Do form buscador
if used("curBusca")
ThisForm.AsigMem(curBusca.Id)
use in curBusca
endif


Ahora el AsigMem. AsigMem es para mi asignacion de memoria... lo uso
como metodo nucleo de todos mis formularios, en ese metodo creo todos
los cursores que necesito en form.

AsigMem()
parameters Id
sqlexec(miConn ,"select * from usuarios where Id = ?Id" ,"miCursor")
ThisFrom.refresh



Como vez en el load lo uso para traer un cursor en blanco que me
servira para trabajar en mi formulario.
Al grabar lo uso para volver a cargar mis datos grabados
Al buscar carga con los datos con lo que necesito segun el id que
trabajo el buscador.

Eso a grandes rasgos porque dependiendo del formulario se va colocando
mas complejo... Pero el metodo siempre es el mismo.

Asi tengo una sola dos opciones... funciona todo o nada funciona

Espero me hayas entendido

Bendiciones


On 29 mar, 12:31, ZeRoberto <zeroha...@gmail.com> wrote:
> Hola extremo
>
> Quize hacer un clase cursorsql con custom, pero el problema sucede en los
> formularios con sesion de datos privados, parece que el control custom
> tiene su propia sesion de datos, asi que le agregue una funcion
> setdatasession y funcionaba asi
>
> goSQL.SetDataSession(ThisForm.DataSessionID)
> goSQL.SQLExec("SELECT * FROM miTabla", "miTabla")
>
> Pero el problema de esto es que me daba un error de VFP me salia no se
> puede leer o escibir la direcion de memoria x126x545, ha veces no me salia
> el mensaje de error y solo se notaba porque algunos botones de mi
> formulario desaparecian o simplemente el vfp se cerraba.
>
> Como lo manejan uds
>
> Haciendolo directo con SQLConnect() SQLExe()?
>
> o ya solucionaron el problema que tengo sobre la clase custom
>
> Saludos
>

Antonio Meza

unread,
Mar 29, 2012, 4:29:08 PM3/29/12
to publice...@googlegroups.com
Hola Roberto

Para trabajar en la forma que de tu ejemplo es un poco mas complicado pero se puede, lo que necesitas es crear un cursor vacio como lo hace Extremo, luego en el insertas los registros, y para guardar es cuando envias el Insert Into donde ya mandas todos los datos completos, y luego como igual dice Extremo vuelves a llamar el cursor pero con el ID guardado para que muestre los datos reales, ahora esto es para registros nuevos, para modificarlos entonces ya usas Update

En mi caso uso algo parecido a cursor adapter o algo parecido a vistas remotas, la diferencia es que yo traigo el cursor por medio de un sqlexec y luego este lo hago modificable o actualizable, así los cambios que haga en este cursor los envio de regreso al servidor mysql por medio del tableupdate, de esta forma uso comandos nativos de vfp como si fuera una tabla dbf y no me complico la existencia investigando que campos o registros modifique, todo lo hace el tableupdate.

Si te interesa te mando la clase para que la pruebes, a demas que maneja transacciones.

saludos

ZeRoberto

unread,
Mar 30, 2012, 12:00:11 PM3/30/12
to publice...@googlegroups.com
Hola Antonio

Lo que dices me parece interesante porque con eso se evitaria estar
actualizando cada rato el grid, pero como le haces editable al cursor,
tienes algun ejemplo

Saludos

Gracias por la respuesta

El 29/03/12, Antonio Meza <solv...@gmail.com> escribió:

Antonio Meza

unread,
Mar 30, 2012, 5:45:14 PM3/30/12
to publice...@googlegroups.com
Claro hace tiempo publique la clase se llama DBVFP buscala ahi vienen los ejemplos, te mando la mas actualizada pero lo que no e hecho es actualizar los ejemplos pero deben funcionar, si te interesas por trabajar con mi clase te ayudo en lo que necesites  es gratuita para la comunidad por lo que me han ayudado a mi, de antemano te comento que tengo un programa de inventarios donde la uso, el cliente genera de 1,000 hasta 2,000 ticketes de venta con 5 cajas diferentes en un dia, y cada tickets puede contener varios articulos, asi te puedo decir que la clase esta perfectamente trabajando bien. con Mysql y tablas innodb usando transacciones tambien.


dbvfp4.1.pdf
dbvfp.vct
dbvfp.vcx
Reply all
Reply to author
Forward
0 new messages