FoxPro/Visual FoxPro - Problema Actualizar datos form

 
Vista:

Problema Actualizar datos form

Publicado por Pablo (Argentina) (433 intervenciones) el 26/02/2010 14:19:57
Hola Amigos, necesito de su ayuda con un formulario que tengo para mostrar los datos de venta de acuerdo al numero de solicitud.
Explico, yo abro un form en el cual hay varias tablas en el entorno de datos, las cuales el Buffermode esta en 3, despues en el form tengo un textbox en el cual ingreso el numero de solicitud y busca los datos del cliente y en los siguientes textbox los muestro, algo asi:

thisform.text1.value = solicitud
thisform.text2.value = nombre
etc
etc

Ahora bien aqui esta el problema, al final del form tengo un boton de comando que tiene el siguiente codigo

SELECT cajacaterventas
vOrden = thisform.txtOrden.Value
LOCATE FOR solicitud = vOrden
IF Found()
replace fecha WITH thisform.txtfecha.Value
replace nombre WITH thisform.txtnombre.value
replace importe WITH thisform.text10.value
replace formapago WITH thisform.text14.Value
ENDIF
=TABLEUPDATE()

Lo que paso es lo siguiente, si yo le doy un click al boton de comando sin modificar ningun dato en los textbox mencinados arriba, no me tira ningun error, todo bien.
Ahora si yo por ejemplo modifico el campo importe, al darle click al boton de comando me tira el error de "No coinciden los datos" ¿Porque?.

Lo que yo quiero es que en caso de que el usuario si se equivoco en la carga de algun datos que se hace por otro form, tenga la posibilidad de venir a este form, ingresar el numero de solicitud, ver los datos del cliente y si hace falta modificar lo necesario y grabar los nuevos datos. ¿Que esta mal hecho? o como deberia ser para que funcione

Desde ya muchas gracias a todos

Pablo - Argentina
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:Problema Actualizar datos form

Publicado por neo (1604 intervenciones) el 26/02/2010 16:44:25
cuando aparece ese error es debido a que el valor del textbox no es igual al campo de la tabla relacionada, ejemplo:

Thisform.txt1.value=0

pero en algun evento antes de volver a guardar, Thisform.txt1.value=" "
es decir cambio su tipo de datos.

Debes revisar el codigo antes de guardar, sobretodo en los txt de fecha y numericos.

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:Problema Actualizar datos form

Publicado por Pablo (Argentina) (433 intervenciones) el 26/02/2010 22:12:10
Hola Neo, bueno gracias por tu ayuda, casulamente ese es el problema que tengo, que yo cambio el dato que me esta mostrando el txt, ejemplo en la forma de pago me aparece Efectivo y yo lo cambio a Tarjeta de credito y quiero grabar el registro con ese nuevo dato con el replace como te lo muestro en la nota anterior, o sea lo veo algo muy sencillo pero resulto ser mas complicado de lo que creia, si lo unico que hago es modificar en un textbox un valor por otro no veo porque el error,
Por ejemplo

yo el el text14 muestro la forma de pago "Efectivo" y despues al lado tengo un optiongroup con 2 opciones efectivo o tarjeta que lo unico que hacen es cuando uno selecciona uno u otro cambia el valor del text14 a la opcion que uno haya tildado y despues en el replace como te lo mostre el valor que guardo es el que esta dentro del text14 o sea SI cambio un valor por otro pero son de caracter y estan en una sola tabla, no veo porque el error.

Podrias vos o el que me pueda ayudar un pequeño codigo de como lo harias, porque otra no se me ocurre.

Muchas Gracias

Pablo - Argentina
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

Ayuda!!!! Actualizar datos form

Publicado por Pablo (Argentina) (433 intervenciones) el 27/02/2010 14:34:37
Hola, Necesito Ayudaaa, con este tema, la verdad que me ha superado algo que creia muy facil de hacer y no encuentro la solucion.

Uds como modifican los datos por ejemplo de un cliente, caso puede ser, cambio la direccion.
Que hacen, los muestran en un form como hago yo, lo modifican y guardan los cambios o usan un grid, o como lo hacen, porque yo usando el form, mostrando los datos, cuando lo modifico y los quiero guardar me da ese error de "No Coinciden los datos" y en las tablas, campos, etc, etc, esta todo bien, misma extension, tipo caracter, etc, etc, es obvio que yo modifico en el textbox el dato y quiero guardar el nuevo mediante un replace pero no funciona.

¿Como hago? o que puedo hacer?

Muchas garcias

Pablo - Argentina
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:Problema Actualizar datos form

Publicado por es_binario (757 intervenciones) el 27/02/2010 15:27:44
Insisto en que uses Update en vez de Replace all.

Para evitar problemas con los valores por ejemplo en un TextBox que va a contener la fecha en el init del form o en el init del textbox pongo algo asi

Thisform.TxtFecha.value = Date()

asi aunque el usuario dese cambiarlo el valor va a seguir siendo del tipo fecha y no tendre errores.

En uno que contenga un tipo entero, en modo diseño en la pestaña datos y en la propiedad value pongo simplente un 0 asi le digo que va a manejar enteros

En uno de tico currency o double o numerico le pongo tambien en modo diseño el valor 0.00 tambien en el inputmask 99,999.99 segun la region y el tipo de formato

y para las cadenas o testo en la propieda format le pongo una !K asi tambien le digo que nada mas acepto mayuscualas esto opcional claro

Como resolver lo del cambio, con un boton que diga "Aplicar cambios" por ejemplo.

El codigo seria algo asi

MsgContinuarUpdate = MESSAGEBOX("¿Seguro que desea actualizar los datos del cliente?",4+32+256,;
"¿Seguro que desea actualizar los datos del cliente?")

IF MsgContinuarUpdate = 6 && si

local _fecha as Date && en caso de que solo sea date y no datetime
local _nombre as String && cadena no character tiene que ser cadena
local _importe as Number && tambien podria ser double o currency pero es mejor usar numeric o double
local _formapago as string && esto es un ejemplo por que no se como lo maneges
local _vOrden as Integer && los bonitos enteros

_vOrden = thisform.txtOrden.Value
_fecha = thisform.txtfecha.Value
_nombre = alltrim(thisform.txtnombre.value)
_importe = thisform.text10.value
_formapago = alltrim(thisform.text14.Value) && otro truco si atrapas las variables de cadena
&& o de caracter con alltrim si el usuario no pone nada es una cadena valida

*// Ahora a guardar los datos
*// consejo personal si van a usar un update siempre linkenlo con variables
update solicitud set fecha = _fecha,;
nombre = _nombre,;
importe = _importe,;
ormapago = _ormapago ;
where vOrden == _vOrden && exactamente igual
messagebox("Los datos se actualizaron exitosamente",64,"Los datos se actualizaron exitosamente")

ENDIF

Saludos, espero te sirba.
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