FoxPro/Visual FoxPro - Descartar datos ingresados en form

 
Vista:

Descartar datos ingresados en form

Publicado por DanielVFP (37 intervenciones) el 01/11/2010 20:19:19
Hola a todos
Mil disculpas x hacer tantas preguntas y seguidas pero como veo que los que responden en este foro tienen muuuuuuuuucho conocimiento les hago preguntas a temas que si las busco en la ayuda de VFP tardaria mucho mas tiempo y no estaría seguro de hacer lo mas óptimo(espero no estar actuando como un egoísta).-
La consulta es como puedo trabajar en un form con datos temporales es decir el operador ingresa los datos y luego decide descartarlos(no grabarlos en la tabla), en Fox para Windows lo hacia con el comando SCATTER MEMVAR, ¿como se hace en visual FoxPro?.-

Muchos saludos.
Daniel
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

RE:Descartar datos ingresados en form

Publicado por neo (1604 intervenciones) el 02/11/2010 01:37:25
puedes usar los cursores, solo son consultas que puedes mostrar como un browse, ademas puedes extraer los datos de la consulta hacia los textbox e incluso enviarlos a una tabla.

Pero como lo que tu deseas es temporal te recomiendo los cursores, ejemplo:

Select *from mi_tabla where codigo=100 into cursor cMi_Consunta
If reccount()>0
select cMi_Consulta
browse
endif

Saludos!!
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:Descartar datos ingresados en form

Publicado por DanielVFP (37 intervenciones) el 02/11/2010 02:42:24
Hola neo
Estamos hablando de cosas distintas.-

Saludos.
Daniel
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por victor perez (278 intervenciones) el 02/11/2010 17:50:28
Hola,

No creo entender bien tu pregunta y pensé que la respeusta de Neo era la mas indicada.

Si deseas trabajar con datos en el form que luego puedes decidir si grabar o no, simplemente lo dejas en variables de memoria. Scatter memvar toma los valores del registro y lo mantiene en memoria y puede manipularlos, no pasaran a la tabla hasta que no hagas un gather memvar y grabes, por lo tanto todo es temporal.

Para asignar como variables de memoria un campo solo debes poner el control source con una "m" seguida de un "." y el nombre igual al campo...ejemplo

Tabla de Usuarios tiene Nombres(c,20), Apellidos(c,30)

Las en el control source pones m.nombres y m.apellidos respectivamente.

Al colocarte en el registro, puede ser con un scatter memvar blank, para que los campos esten en blanco, puedes trabajar y hacer lo que quieres.

Si decides grabar, entonces haces un Gather memvar a un registro en blanco (append blank) y listo. Se pasa la informacion a la tabla.

Si haces un Cancelar o Salir, no pasa nada a la tabla.

Con los cursores es lo mismo, captas la info en el cursor y luego puedes hacer con ello lo que quieras...si lo vas a manipular al comando que te dio NEO debes agregar READWRITE para que los cambios se puedan transmitir a la TABLA.

Si no es lo que preguntas, pues si nos das un ejemplo te ayudamos mejor.

Estamos para aprender entre todos.

Victor -- Panama --
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por Juanma Cruz (512 intervenciones) el 02/11/2010 18:37:34
...o utilizas almacenamiento en búfer y luego confirmas los cambios o los descartas con TABLEUPDATE / TABLEREVERT y no tienes que estar lidiando con variables de memoria...

Pero vamos, que yo tampoco me entero qué es exactamente lo que pretendes.
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:Descartar datos ingresados en form

Publicado por DanielVFP (37 intervenciones) el 02/11/2010 19:40:18
Hola a todos
Todo lo que dice Víctor es exactamente lo que quería hacer.-
Si no hubiera contestado Juan Mauel les diría que hubiera optado por hacer lo que dice Víctor, pero después de leer sobre TABLEUPDATE / TABLEREVERT, es eso exactamente lo que buscaba, solo falta saber como implementarlo en mi programa.-
Neo,perdón x no hacerme entender lo suficiente.-

Saludos a todos.
Daniel
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por VICTOR PEREZ (278 intervenciones) el 02/11/2010 21:10:42
Estimado Amigo,

Los comandos TABLEUPDATE /TABLEREVERT fueon incorporados, creo, en la version 9.0. Como no sabia que version tenias pues te dije una solucion independiente de la version.

Estos dos comandos son muy interesantes al igual que otros incorporados en esta version. No he tenido el tiempo de lidiar con ellos, asi que su implementación no se como hacerla.

Un saludo,

Victor,
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
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Para Victor!!!!!

Publicado por Mauricio (1541 intervenciones) el 23/11/2010 16:07:36
Disculpa Victor pero esos comandos y otros vienen desde la version 6.0 o anterior me parece!!!!!!!!!!!!!!!!!!
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por victor perez (278 intervenciones) el 02/11/2010 21:24:01
Solo para aclarar, estuve revisando la version 6.0 y alli tambien aparece TABLEUPDATE/REVERT .

Un saludo,

Victor,
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:Descartar datos ingresados en form

Publicado por DanielVFP (37 intervenciones) el 02/11/2010 21:55:06
Hola Victor
La versión es la 9.0 y x mas que practico no logro que me funcione.-
Espero ayudas.-

Saludos.
Daniel
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por victor perez (278 intervenciones) el 02/11/2010 22:00:02
Bueno, al no tener experiencia con el comando no se como ayudarte.

Pero el help de VFP9 muestra una manera sencilla de hacerlo. Intentalo y nos cuentas o bien puedes consultar con Juanma que aparentemente tiene experiencia con esos comandos.

Victor,
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
sin imagen de perfil

RE:Descartar datos ingresados en form

Publicado por Juanma Cruz (512 intervenciones) el 03/11/2010 13:41:44
A ver si me logro explicar bien, mi vena pedagógica es un asco :)

los controles de texto no deberían usar variables de memoria, que luego se asignan a campos... ni viceversa. Olvidaros de REPLACE WITH de una vez, salvo casos puntuales.

La propiedad controlsource de cada textbox debería estar asignada directamente al campo de la tabla. ( Formulario.Textbox1.ControlSource= Alias.campo ), eso desde el formulario de diseño, nada de programación directa.

Pones todos los textbox que necesites dentro de un Container. (Digo textbox, como lo mismo controles calendar de fecha, editboxes para campos memo, checkboxes, etc...)

Así, cada vez que te mueves de registro en una tabla, en un formulario de mantenimiento de tabla (crear, editar, modificar, eliminar), basta con darle refresh al Container para que actualice la información en pantalla.

Mantener enabled en .F. del Container evita que alguien haga cambios involuntarios.

Cuando necesites modificar datos, cambias el enabled a .T. del container, para poder acceder a los controles contenidos en él. Si se trata de crear un nuevo registro, primero un APPEN BLANK.

Teniendo el formulario con BUFFERMODE en modo pesimista (bloquea el registro actual en cuanto entras a él) o modo optimista (bloquea el registro sólo cuando intentas grabar los cambios) garantiza que puedas grabar o descartar cambios hechos directamente en el registro.

Terminas de hacer los cambios, haces las verificaciones que necesites hacer y de ir todo OK das click al botón GRABAR y haces TABLEUPDATE verificando su valor de retorno para asegurarte que la operación ha sido exitosa.

O das click al botón DESCARTAR y haces TABLEREVERT.

En caso de un Appen Blank (registro nuevo) que luego no quieras grabar, el tablerevert lo hace desaparecer, para tí es transparente.

Al final de cualquiera de esas operaciones, darle Refresh al container para asegurarte que la información siempre está actualizada en pantalla.

Yo vengo programando con esta técnica desde VFP7 que ya estaba más estable el tema de los BufferMode.

Con un poco más de maña, te creas una clase formulario para las operaciones estándar de mantenimiento, y así la reutilizas en tus siguientes formularios, adaptando según la necesidad.

Espero que sea de utilidad. Saludos.
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:Descartar datos ingresados en form

Publicado por DanielVFP (37 intervenciones) el 03/11/2010 17:22:20
Hola Juanma Cruz
En cuanto a la manera de <Agregar> <Editar> yo me cree mi propia manera de hacerlo con un campo con una clave(en la misma tabla) que servía para agregar y editar que funciona muy bien, cuando estaba todo validado hacia un APPEN BLANK para agregar y como en editar reemplazaba todos los campos con ThisForm.tCodigo.Value y si descartaba los cambios no hacia nada para <Agregar> limpiaba todos los campos menos el clave y listo, y para <Editar> reemplazaba todos los campos del campo clave con el registro en pantalla.-
En cuanto a lo tuyo le pones tanto énfasis que voy a implementarlo de inmediato.-

"Con un poco más de maña, te creas una clase formulario para las operaciones estándar de mantenimiento, y así la reutilizas en tus siguientes formularios, adaptando según la necesidad".

Siempre hay algo mas, luego buscare algún ejemplo con el post echo x Juanma Cruz o alguien de este foro.-

Saludos y muchas gracia x tu tiempo.-
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
Imágen de perfil de XXX
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Descartar datos ingresados en form

Publicado por XXX (1541 intervenciones) el 23/11/2010 15:58:03
Tampoco tienes que comportarte tan comodo, DEBES asi con mayusculas acostumbrarte a leer la ayuda del lenguaje que quieras aprender, talvez asi algun dia aportes algo de lo que estas aprendiendo........es una opinion nada mas
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