FoxPro/Visual FoxPro - UPADTE ayuda POR FAVOR!!!!!

 
Vista:

UPADTE ayuda POR FAVOR!!!!!

Publicado por Pablo (Argentina) (433 intervenciones) el 05/06/2009 23:24:10
Amigos programadores, uds que seguro saben mas que yo, porqie yo hace poco que estoy de nuevo en esto y gracias a Uds he aprendido un monton, pero ahora estoy necesitando de su ayuda nuevamente porque tengo un pequeño problema y le doy vuelta y no encuentro solucion

En init del form, llamo a un thisform.refrescagrilla, el cual adentro tiene un select para mostrar datos en un grid.
Esos datos bueno, hay una columna que tiene un campo logico la cual yo modifico por si me pagaron o no. y despues hago un update para grabar esos cambios de esta manera

update pagos set pagada = .T. where codigo.cliente = pagados.codigo

Pagados el el cursor que creo con el select para mostar los datos.

Bueno todo eso me funciona bien, en el grid, graba los datos y todo bien.

Perooo lo que no puedo resolver despues que hago un UPDATE es que me deje en el grid solamente los clientes que pagada = .F. ¿me explico?. No puedo referscar el grid, y ya intente de todo.

Llamo al thisform.refrescagrilla y nada, le hago un thisform.grid1.refresh despues del update y tampoco, no se que mas intentar o donde tengo que colocar el codigo para que funcione, esto de las instrucciones SQL son nuevas para mi recien estoy empezando a usarlas.

Bueno Muchas Gracias a todos y espero me puedan ayudar.

Pablo
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

RE:UPADTE ayuda POR FAVOR!!!!!

Publicado por Angel Vidal (26 intervenciones) el 06/06/2009 13:26:10
Amigo Pablo, el grid se actualiza a traves de tu cursor, entonces ejecuta luego de tu actualizacion lo siguiente

DELETE FROM PAGADOS WHERE PAGADA = .T.

ENTONCES EN EL CURSOR SOLO QUEDAN LOS QUE NO FUERON ACT.

ESPERO TE SIRVA Y U ABRAZO
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

RE:UPADTE ayuda POR FAVOR!!!!!

Publicado por Pablo (Argentina) (433 intervenciones) el 06/06/2009 15:50:17
Hola Angel, muchas Gracis por tu respuesta y ayuda, mira antes de probar tu instruccion me empezo a pasar algo que antes no hacia y ahora se me pudrio todo digamos
Como te dije todo lo anteriormente hago un select en el init y creo un curso que se llama sin aplicar y tengo 2 tablas relacionadas por un campo solicitud
modifico el grid y lugo hago

UPDATE altashabi SET pagada = .T. WHERE sinaplicar.solicitud = altashabi.solicitud

y eso supuestamente me deberia grabar en la tabla altashabi los campos en las que pagada sea = .T. de acuerdo a solicitud o ¿no?, bueno ahora no me funciona, Digo que no los graba porque hice un browse a la tabla y sigue todo igual. ¿alguna solucion?.

SinAplicar es el cursor que creo con el select en el init

y despues para refrescar el grid como me dijistes en tu respuesta anterior hago esto pero todavia no lo probe

DELETE FROM sinaplicar WHERE PAGADA = .T.

Gracias por tu ayuda

Pablo
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

RE:UPADTE ayuda POR FAVOR!!!!!

Publicado por es_binario (757 intervenciones) el 06/06/2009 22:48:14
Man de nuevo, mira en la noche te hecho la mano, checa el proyecto que te mande a tu mail, es el mismo que me enviaste solo que con el metodo refresca, para hacer la actualizacion, simplemente se hace un update de una tabla a otra o un update con un ciclo, en fin pero no como tu lo haces sino un update sql

update into tabla(campos) ;
values (valores)

ya que estas usando cursores en la form, no se si me esplico, mira el form que te mande no esta del toro terminado, me parece que repites muchos campos en las tablas hijas, y no entiendo del todo, cual es la finalidad del formulario.

si me dices mas o menos cual es el objetivo de guardar datos en direfentes tablas con su respectivo (por que de las relaciones) te ayudaria mucho mas.

tal vez es por mi forma de trabajar, pero seguro si me esplicas un poco mas te apoyo mejor.

un saludo
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

RE:UPADTE ayuda POR FAVOR!!!!!

Publicado por Jose Gamboa (33 intervenciones) el 08/06/2009 17:37:10
Hola!
Para resolver algo como comentas, lo que posiblemente este pasando es lo siguiente
En el metodo Init creas una tabla obviamente mediante una condicion where dentro de tu select
INIT:
select * from tablaX where tablaX.modificado = .F. into cursor Tabla2
donde el recordsource del grid en el form es el alias tabla2

cuando se actualiza el campo modificado por el valor .T. en el cursor tabla2 (cursor temporal) y en el cursor tablaX (que es la original) lo que se muestra en el formulario no cambia por la razon que el grid muestra toda la tabla2, para que solo muestre modificado = .F. se tiene que agregar una condicion general antes de hacer el refresh en el grid por ejemplo
select tabla2
set filter to modificado = .F.
thisform.refresh

o si se utiliza la opcion delete from tabla2 where modificado = .T. se tiene que agregar a la condicion general
set delete on
para que no muestre los registros borrados y de esta manera no se muestre en la tabla ya que mientras SET delete se encuentre en off los registros borrados se van a mostrar ya sea en un grid o ejecutando un browse una consulta o como sea
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