Usar Vistas o Cursor para actualizar los registros de un grid ? ..

1,192 views
Skip to first unread message

Fox Learner

unread,
Nov 28, 2012, 10:43:17 AM11/28/12
to publice...@googlegroups.com
Usar Vistas o Cursor para actualizar los registros de un grid ? ..

Observo en el foro que la mayoría usa "cursores" para manipular datos.

¿Cómo es más recomendable usarlos para actualizar datos ?..

1. Actualizando los datos directo a la tabla nativa o SGBD, para luego borrar los datos del grid y volver a presentar los datos ya modificados desde la tabla o SGBD.

2. Fabricando un cursor "actualizable".. ¿Cómo se hace eso ?..


Cuando se trabaja con datos locales, veo que el manual recomienda como forma nativa el uso de vistas.

Aparentemente, la configuración de una vista hace que el programador se "despreocupe" de la actualización de datos.

¿Por qué nadie parece usarlas, y en su lugar todo mundo habla de cursores ? ..

Saludos!

Fox Learner

unread,
Nov 30, 2012, 10:21:03 AM11/30/12
to publice...@googlegroups.com
Tal vez no me expliqué.. La pregunta básica es porqué nadie parece usar las vistas, cuando parece ser lo recomendado en los manuales ?...

La mayoría parece usar cursores, que de alguna forma vuelven "actualizables" o los usan como "puente" para actualizar los datos de alguna forma.

A qué se debe que nadie parece usar las vistas?...

Saludos!

Robert Martínez

unread,
Nov 30, 2012, 11:38:03 AM11/30/12
to publice...@googlegroups.com
En mi caso particular los cursores me brindan mucho mayor flexibilidad, a la hora de  manipular los datos o seleccionarlo, pero en mi caso yo nunca utilizo la base de datos nativa de VFP. Siempre trabajo con servidores de base de datos remoto y me ha resultado mucho mas fácil utilizar cursores actulizables y mejor aun con CursorAdaptor.


Víctor Hugo Espínola Domínguez

unread,
Nov 30, 2012, 12:34:58 PM11/30/12
to publicesvfoxpro
Hola Fox Learner

El inconveniente de las Vistas remotas es que deben estar contenidas en una base de datos nativa .DBC. Es decir tienes que tener en el servidor dos bases de datos: la de VFP y la del motor que estás usando ( Firebird, MySql, etc.. ). La base de datos nativa debe estar en una carpeta compartida, mientras que la otra no necesariamente. Esto es un problema potencial de seguridad.
También he leído, no recuerdo la fuente, que suele haber problemas en accesos simultáneos a una misma vista remota.
Lo ideal es que la modificación de la base de datos se haga en una capa independiente.

Saludos.
Víctor.



--
 
 

Carlos Miguel FARIAS

unread,
Nov 30, 2012, 12:36:19 PM11/30/12
to publice...@googlegroups.com

En vfp, los cursores son vistas temporales.
La vista es una select catalogada en la bd.
No todos los sgbd soportan vistas actualiza les.
En operaciones complejas, las vistas no son generalmente opciones de buen desempeño (lentas) y si hay anidamiento de vistas, pueden armarse cuelgues en cosas triviales.
Saludos: Miguel, La Pampa, (RA)

El 30/11/2012 12:21, "Fox Learner" <thenewin...@gmail.com> escribió:

Fox Learner

unread,
Nov 30, 2012, 1:56:57 PM11/30/12
to publice...@googlegroups.com
Muy bien... Gracias por sus apreciaciones.

Una vez definido que debo usar cursores y olvidarme del tema de las vistas, repito las 2 preguntas acerca de ellos que mencioné en el primer mensaje:

... para actualizar los registros de un grid.


Observo en el foro que la mayoría usa "cursores" para manipular datos.

¿Cómo es más recomendable usarlos para actualizar datos ?..

1. Actualizando los datos directo a la tabla nativa o SGBD, para luego borrar los datos del grid y volver a presentar los datos ya modificados desde la tabla o SGBD.

2. Fabricando un cursor "actualizable".. ¿Cómo se hace eso ?..

Saludos!


Carlos Miguel FARIAS

unread,
Nov 30, 2012, 9:07:04 PM11/30/12
to publice...@googlegroups.com

No te confundas. Para actualizar datos usas cursores para manejar te localmente. Definido lo que se quiere actualizar, envías al servidor el update, insert que corresponde. Las vistas sirven para responder a requerimientos de consulta frecuentes. Estas las creas en el servidor y este va a responder mas rápido que si mandas un select equivalente.
Saludos: Miguel, La Pampa (RA)

--
 
 

Julián May

unread,
Nov 30, 2012, 9:37:32 PM11/30/12
to publice...@googlegroups.com
Así es como dice Miguel las Vistas se crean en el servidor es una consulta  y responde mas rápido que un SELECT .. Yo aprendí una técnica aquí cuando trabajaba con BD nativas utilizando cursores y al momento de hacer un update o insert abro la tabla y la cierro al momento no se si realmente sea una buena técnica. Me paso que recién entrego un sistema de ventas y puff dos horas y me hablan que marca error y me marcaba error de que el indice se había dañado. Entonces investigando de otros expertos comentan que con cursores para evitar uno de esos problemas. Yo utilizo estos dos procedimientos 

= AbrirTabla('MITABLA','MIINDICE') 
   ** Realizo la operación 
= CerrarTabla('MITABLA') 

E invoco la vista o llamo un cursor. realmente no se si sea una buena técina pero a mi me ha funcionado en datos locales ya que en una arquitectura cliente - servidor 

no es recomendable traer todos los datos. cuando es requerido muestro los primeros 20 y asi sucesivamente. 

Saludos 
PROCEDURE AbrirTabla
PARAMETERS Tabla, Indice 
 
IF USED(tabla)
    CerrarTabla(tabla)
ENDIF    
SELECT 0 
USE &Tabla 
SET ORDER TO TAG &Indice
ENDPROC 
*
*
PROCEDURE CerrarTabla
PARAMETERS Tabla
IF USED(tabla)
 SELECT &Tabla
 USE 
ENDIF   
ENDPROC 
*

Víctor Hugo Espínola Domínguez

unread,
Dec 3, 2012, 9:05:46 AM12/3/12
to publicesvfoxpro
Hola Fox Learner


Saludos.
Víctor.



--
 
 

Reply all
Reply to author
Forward
0 new messages