FoxPro/Visual FoxPro - Actualizar Registros desde cursor

 
Vista:

Actualizar Registros desde cursor

Publicado por Edwin (31 intervenciones) el 21/05/2011 05:28:04
Hola amigos tengo una tabla llamada notas donde pienso ingresar las notas de los estudiantes matriculados en las materias, para ello he puesto un grid en mi formulario y dicho grid lo alimento con un cursor que saco mediante el siguiente codigo.

select * from notas into cursor _micursor readwrite
thisform.grid1.recordsource=''
thisform.grid1.recordsource='_micursor'

cuando estoy en el form me funciona bien, puedo modificar los valores en el grid pero cuando voy a ver a la tabla los datos no se han modificado, como puedo hacer o que debo hacer para que se actualizen tambien los datos en la tabla..

he usado el siguiente codigo pero no me funciona, talvez me ayudan a corregirlo. es solo una practica la que estiy haciendo.

SELECT _MICURSOR
SCAN
_RNE = _MICURSOR.RNE
_NOMBRE=_MICURSOR.NOMBRE
_APELLIDOS=_MICURSOR.APELLIDOS
update PRACTICA set NOMBRE=_NOMBRE, APELLIDOS=_APELLIDOS where PRACTICA.RNE = _RNE
select _MICURSOR
endscan

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Actualizar Registros desde cursor

Publicado por Juan Manuel Cruz (512 intervenciones) el 23/05/2011 11:16:34
Os complicais demasiado creando cursores temporales, haciendo recorridos innecesarios, etc, Esa es una forma de programar obsoleta, con todas las herramientas de VFP9.

Os recomiendo seriamente aprender el uso de CursorAdapter, como método de interactuar con tablas, ya que crea una capa de abstracción respecto al origen real de datos. Que sí, que las primeras veces es un poco engorroso, pero lo que os vais a ahoraar luego en esfuerzo, confiabilidad, y código...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar Registros desde cursor

Publicado por es_binario (757 intervenciones) el 21/05/2011 16:04:15
Recientemente yo tube un problema parecido pero yo siempre he usado un for-next el caso es que mi problema era que me guardaba la venta actual el detalle y el detalle de la venta anterior acumulandose haciendo caso omiso al set deleted on, entonces cree un cursor apartir de mi cursor contenedor de mi grilla, tal vez sea tu caso seria algo asi para ti

SELECT _MICURSOR
for ve = 1 to reccount()
select _MICURSOR
go ve
_RNE = _MICURSOR.RNE
_NOMBRE=_MICURSOR.NOMBRE
_APELLIDOS=_MICURSOR.APELLIDOS
update PRACTICA set NOMBRE=_NOMBRE, APELLIDOS=_APELLIDOS where PRACTICA.RNE = _RNE
endfor


este es mi codigo para que te quede mas claro... recuerda que en mi caso es un registro del detalle de una venta y solo es parte de mi codigo.

*// barre el cursor para instertar los datos
SET DELETED ON
SELECT * FROM detallepv INTO CURSOR detallepv_
SELECT detallepv_
FOR t = 1 TO RECCOUNT()
SELECT detallepv_
GO t
cant__ = detallepv_.cantidad
p_pub__ = detallepv_.p_pub
descu__ = detallepv_.descuento
iva___ = detallepv_.iva
cod_bar__ = detallepv_.cod_barra
anti__ = detallepv_.anti
INSERT INTO detalleventa (pedido, cantidad, p_publico, descuento, iva, codigo_barra, antibiotico);
VALUES (pedido_graba, cant__, p_pub__, descu__, iva___, cod_bar__, anti__)
ENDFOR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar