¿Cómo agrego un formulario que recupere la información de las tablas y actualize los registros?

Hola nuevamente experto, estoy tratando de agregar un formulario el cual recupera la información de las tablas y lo que necesito realizar en una actualización de los registros pero no se como se hace esta parte, estaba tratando de hacerlo con el comando tableupdate pero me perdí en la lógica, perdona la molestia pero me podrías indicar como poder hacerlo si es con este comando o hay otra forma de realizarlo
Saludos
Mishel
1

1 respuesta

Respuesta
1
1) Utilizas el entorno de datos de tu formulario para agregar en él las tablas que contienen los registros que deseas modificar. Debes tomar la precaución que modificar la propiedad Buffermodeoverwrite de cada tabla y ponerla en 5.
2) Agrega los con controles a tu formulario y enlaza la propiedad controlsource de cada control al campo de la tabla que corresponda.
3) Establece el órden de tabulación del Form.
4) En el evento click de tu botón guardar o aceptar escribe lo siguiente
thisform.mousepointer=11
* agrega el código de verificación que necesites *
if ... && Condicional que evalúa si se cumplen las condiciones de integridad de los datos
   =tableupdate(.t., .t.,  "mitabla")
   Thisform. Release
Endif
Para mayor información consulta la ayuda de Buffermodeoverwrite y Tableupdate()
Fíjate que lo realice de esta forma no me genera ningún error pero tampoco me actualiza por favor podrías indicarme que hice mal.
crsdetalle es el cursor que me carga los datos
detadataquimio es la base donde están los campos
SELECT detadataquimio
=CURSORSETPROP("Buffering",5,"crsdetalle")
APPEND FROM DBF(crsdetalle)
IF TABLEUPDATE(2,.F.,"detadataquimio")= .F.
MESSAGEBOX("Hubo un error al guardar, se cancelara los cambios realizados",48,"Sistema")
TABLEREVERT(.F.,"detadataquimio")
ELSE
MESSAGEBOX("Registro se ha guardado correctamente",0+64,"Sistema")
Endif
Gracias
Creo que el error está en la siguiente línea:
=CURSORSETPROP("Buffering",5,"crsdetalle")
Debería ser:
=CURSORSETPROP("Buffering",5,"detadataquimio")
Estabas activando el modo de almacenamiento en Buffer para el cursor en lugar de la tabla.
Fíjate que lo estuve probando y lo que hace es duplicar el documento y no lo actualiza
Mishel:
Te paso todo el código "comentado" para que lo veas:
SELECT detadataquimio && seleccionas tabla
=CURSORSETPROP("Buffering",5,"detadataquimio") && Activas almacenamiento en Buffer.
APPEND FROM DBF(crsdetalle) && agregas registros
IF TABLEUPDATE(1,.T.,"detadataquimio")= .F. && verificas si se guardaron los cambios
MESSAGEBOX("Hubo un error al guardar, se cancelara los cambios realizados",48,"Sistema")
TABLEREVERT(.T.,"detadataquimio") && Reviertes los cambios.
ELSE
MESSAGEBOX("Registro se ha guardado correctamente", 0+64,"Sistema")
Endif
Fíjate que he cambiado los parámetros de la función Tableupdate() y Tablerevert(). Si tienes dudas consulta la ayuda de Visual FoxPro para estas funciones.
Pruébalo, es bastante simple y debe funcionar !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas