el búfer de tablas para el alias contiene cambios no confirmados

958 views
Skip to first unread message

Carlos MauricioTorres Suárez

unread,
Oct 14, 2013, 10:43:07 AM10/14/13
to publice...@googlegroups.com
Estamos utilizando MYSql para nuestra aplicación, las tablas las abrimos con las siguientes instrucciones:

PROCEDURE BDFAC000
 lcStringCnxLocal = "DRIVER={MySQL ODBC 5.2w Driver};" + ;
                    "SERVER="+Servidor+";" + ;
                    "UID="+mUid+";" + ;
                    "PWD="+mPwd+";" + ;
                    "DATABASE=&La_Base;" + ;
                    "OPTIONS=131329;"
 SQLSETPROP(0,"DispLogin" , 3 )
 lnHandle = SQLSTRINGCONNECT(lcStringCnxLocal)
 SQLEXEC(lnHandle,"Select * from BDFAC000 ORDER BY Factura ASC","BDFAC000")
 CURSORSETPROP([Buffering],5,"BDFAC000")
 CURSORSETPROP([SendUpdates],.T.,"BDFAC000")

Cuando queremos ordenar la tabla por el campo Factura utilizamos
 CURSORSETPROP([Buffering],3,"BDFAC000")
y escribimos INDEX ON Factura TAG Factura

porque con el Buffering en 5 no nos deja indexar, pero cuando hacemos esto nos regresa el error de el búfer de tablas....

Por favor ayuda porque estamos trabados en esto.

Saludos y Gracias

Ricardo Pina

unread,
Oct 14, 2013, 11:28:35 AM10/14/13
to Grupo VFP
Hola Carlos
 
Si tienes cambios sin confirmar no puedes cambiar el buffering de tabla a registro sin antes manejarlos (confirmarlos o descartarlos)
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Victor Lopez

unread,
Oct 14, 2013, 12:00:37 PM10/14/13
to publice...@googlegroups.com
Indexa inmediatamente después de generar el cursor

SQLEXEC(lnHandle,"Select * from BDFAC000 ORDER BY Factura ASC","BDFAC000")

INDEX ON Factura TAG Factura

Y entonces usa el CURSORSETPROP para buffering 3 o 5

Saludos

--

______________________
Victor Gerardo López
Director de desarrollo
POSMEX, Guadalajara
33 3359 9565

Víctor Hugo Espínola Domínguez

unread,
Oct 14, 2013, 12:03:40 PM10/14/13
to publicesvfoxpro
Hola Carlos Mauricio

No entiendo para que quieres indexar si ya lo trajiste ordenado desde la base de datos. Pero si insistes la solución es indexar antes de CURSORSETPROP([Buffering],5,"BDFAC000").

Si lo que pretendes es que los cambios hechos al cursor actualicen la tabla entonces te faltan más especificaciones. Adjunto una función para crear un cursor actualizable.

Saludos,
Víctor.
Lambaré - Paraguay.



El 14 de octubre de 2013 11:43, Carlos MauricioTorres Suárez <cama...@ctsoft.com.ec> escribió:
cursoractualizable.prg

mpulla

unread,
Oct 14, 2013, 1:05:29 PM10/14/13
to publice...@googlegroups.com
Hola Carlos.

Que funcionalidad le vas a dar al cursor?

Saludos.
Mauricio

Guillermo MDQ

unread,
Oct 14, 2013, 1:29:36 PM10/14/13
to publice...@googlegroups.com
Para que necesitas utilizar el buffering en el cursor si estas trabajando con MySQL ?
Porque lo que te estaria faltando es un TABLEUPDATE o un TABLEREVERT, o sea confirmar o cancelar los datos del cursor pero eso seria si actualizaras una tabla de vfp.

Saludos
Guillermo

mpulla

unread,
Oct 14, 2013, 6:12:23 PM10/14/13
to publice...@googlegroups.com
Hola Gillermo.

La pregunta va porque veo que es un cursor simple no lo está haciendo actualizable para hacer un tableupdate

Además hacer un Select * from BDFAC000 ORDER BY Factura ASC me suena que es para mostrarlo en un listado, de ahí mi pregunta para que aplicarle buffering.

Saludos
Mauricio

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Oct 14, 2013, 6:20:13 PM10/14/13
to publice...@googlegroups.com
Hola me imagino que estas actualizando algunos datos y el ordenamiento es solo para mostrar al inicio y una ves que este en el cursor quieres seguir manteniendo el orden lo único que tienes que hacer es utilizar es TABLEUPDATE O TABLEREVERT, con eso solucionaras tu problema.


Pd.: Descargate mi grilla que tiene multiples funciones como filtrar, multiseleccion, búsqueda, etc del siguiente link http://www.developervfp.blogspot.com/p/gridlibre-v35.html. Ahora también puedes bajarte mi ultima herramienta Busqueda Incremental con un TEXTBOX http://developervfp.blogspot.mx/p/busqueda-incremental-con-un-textbox.html  las herramientas viene con código fuente, ojo no hacer mal uso por favor. 


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
San Juan del Rio - Queretaro - Mexico 
Nextel.: 52*133750*16
rycjesusrj @ hotmail.com
Framework Multi-conexion version 6.0 (nueva)

Gustavo Rojo

unread,
Jul 17, 2014, 7:57:06 PM7/17/14
to publice...@googlegroups.com
Hola Foro!

Tengo una consulta que esta relacionada con este tema por eso la escribo aquí y no abro un tema nuevo. 

Trabajo con vistas locales y base de datos nativa de VFP9.
Existe alguna función para verificar si hay cambios en una vista actualizable o solo se abrió para consulta sin modificar ningún dato?
Ya que me gustaría alertar al usuario si cambio algo y no lo esta guardando.

Saludos y gracias!

Antonio Meza

unread,
Jul 17, 2014, 8:45:23 PM7/17/14
to publice...@googlegroups.com
Hola!!

Uso esta funcion, GETNEXTMODIFIED(), la cual te dice cuantos registros fueron modificados

IF GETNEXTMODIFIED(0) <> 0
     wait windows "hay cambios"
ENDIF


Puedes especificar la tabla

IF GETNEXTMODIFIED(0,"nombreTabla") <> 0
     wait windows "hay cambios"
ENDIF


saludos
Antonio Meza

Gustavo Rojo

unread,
Jul 18, 2014, 7:39:24 AM7/18/14
to publice...@googlegroups.com

Hola Antonio.
Muchas gracias por tu ayuda, es justo lo que necesitaba.

Saludos!

Gustavo Rojo

unread,
Jul 18, 2014, 11:12:17 AM7/18/14
to publice...@googlegroups.com
Antonio, implemente tu codigo:

IF GETNEXTMODIFIED(0,'v_cliente') <> 0
    WAIT WINDOW 'Hay cambios pendientes'
    RETURN
ENDIF

y me devuelve un error: 'Table buffering is not enabled'

La vista v_cliente tiene modo de buffer 3 y tengo set miltilooks en on,,,,
No logro darme cuenta donde esta el problema

Saludos

--
Gustavo Rojo| Sr. Analyst & QA
La Plata (1900), Buenos Aires, Argentina
Office: +54.9.221.5374343 
Skype: rojo.gustavo

Antonio Meza

unread,
Jul 18, 2014, 11:18:34 AM7/18/14
to publice...@googlegroups.com
Prueba poniendo buffering 5 en vez de 3 a ver si asi te funciona!!

saludos!!

Gustavo Rojo

unread,
Jul 18, 2014, 11:23:16 AM7/18/14
to publice...@googlegroups.com
Si Antonio, de esa forma funciona, cual es la diferencia entre cada modo?

Antonio Meza

unread,
Jul 18, 2014, 11:35:12 AM7/18/14
to publice...@googlegroups.com
No recuerdo bien, creo que el 5 es para varios registros y el 3 es para un registro, en mi caso siempre eh usado 5.

saludos

Gustavo Rojo

unread,
Jul 18, 2014, 11:37:08 AM7/18/14
to publice...@googlegroups.com
Ok, muchas gracias. Vere como se comporta en un ambiente productivo.

Saludos

Antonio Meza

unread,
Jul 18, 2014, 12:16:27 PM7/18/14
to publice...@googlegroups.com
No deberías tener ningún problema, como te comento siempre eh usado bufering 5 y a demás uso vistas locales.

saludos
Reply all
Reply to author
Forward
0 new messages