FoxPro/Visual FoxPro - modificar datos en textbox

 
Vista:

modificar datos en textbox

Publicado por Pablo (Argentina) (433 intervenciones) el 08/05/2010 01:00:20
Hola Amigos del foro, como va tanto tiempo, bueno les cuento mi problema a ver si me pueden dar una idea o ayudarme con el tema.
El problema es el siguiente, en un formulario yo tengo 6 tablas y el el mismo form muestro los datos de varias de ellas en los textbox, esto lo hago para cuando quiero modicar el dato de algun campo, ejemplo "Nombre del Cliente" por decir algo, suponiendo que inicialmente lo escribi mal cuando lo di de alta y entonces voy a modificar ese registro, bueno es tema a la hora de GUARDAR los cambios, al final tengo un BOTON para aceptar los cambios realizados en los textbox, y cuando lo ejecuto me da el siguiente error "Los Datos no Coinciden" o sea, si yo modfico algo cuando los guardo me da ese error, si yo le doy al boton sin moficar nada todo bien, ¿que puede ser?

Yo utilizo para reemplazar el campo modificado el comando REPLACE o sea selecciono la tabla y despues pongo replace nombre with thisform.txtnmbre.value no se si asi esta bien o como seria.

La otra que podria utilizar seria el comando UPDATE pero tendria que utilizar un update para cada campo o como seria.

Ej.
select clientes
replace codigo with thisform.txtcodigo,value
replace nombre with thisform.txtnombre.value
replace direccion with thisform.txtdireccionn.value

asi es como tengo el codigo en el boton guardar y me da el error arriba mencionado,

¿como lo puedo solucionar?

Desde ya Muchas gracias

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

Modificar datos en textbox

Publicado por Mauricio (1541 intervenciones) el 08/05/2010 15:19:56
Pablo, una observacion: cuando te da el error "los datos no coinciden" no hay donde perderse, sucede que como tienes definidos tus campos en la tabla no es igual a como estan definidos en el form, empieza por revisar eso.
*
En cuanto al REPLACE esta sentencia se usa mucho en FOXPRO, en VISUAL tambien se puede utilizar pero debido a muchas cosas en VISUAL por cada campo en RECORDSOURCE, pones en cada uno el campo que debe ser y en el boton guardar solo tienes que usar UPDATE, luego si hay otros campos que no estan en el formulario, pues a usar el REPLACE!!!!!!!
*
El update se usa uno solo por formulario no por cada campo
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:Modificar datos en textbox

Publicado por es_binario (757 intervenciones) el 09/05/2010 01:49:19
Estoy de Acuerdo con mauricio el error debe deberse a que digamos un campo numerico que tienes como double en tu tabla al ser un numero cerrado en el txtbox, este lo tome como entero por eso cuando se remplaza te da ese error, ahora como habras visto la mejor forma de hacer eso es usando metodos, un metodo que mueste los datos otro que lo guarde y asi quedara mejor te paso un ejemplo de una modificacion clientes

Tengo un form clientes que sirbe para consultarlos y para guardar modificaciones

En el boton consulta tengo el siguiente codigo que llama a un metodo del form
IF this.Caption == "Consulta"
*// el cliente cero es invalido y regresa el foco al cliente
IF this.Parent.cliente1.Value = 0
this.Parent.cliente1.SetFocus
ENDIF

Thisformset.pon_cliente
ELSE
*// aqui se llama una limpia del formulario
thisformset.limpia_datos_form
this.Init
ENDIF

Bueno aqui lo importante es el metodo de pon_cliente que pone los datos del cliente ese evento que te muestro arriba esta en el evento click del boton buscar cliente

y aqui esta el codigo que pone los datos en pantalla

*// coloca los datos del cliente en el formulario si este existe
LOCAL cliente_mod_busca
STORE Thisformset.formulario1.cliente1.Value TO cliente_mod_busca
IF cliente_mod_busca > 0
*// comienza la consulta con un dato valido

SELECT * FROM clientesa WHERE clientesa.cliente == cliente_mod_busca;
INTO CURSOR cur_cliente_encontrado_mod
*// verificamos que haya algun resultado
SELECT cur_cliente_encontrado_mod
IF RECCOUNT() > 0
*// se encontro un cliente y por lo tanto se ponen sus datos en el fomulario
WITH thisformset.formulario1
.nombre1.value = cur_cliente_encontrado_mod.nombres
.apaterno1.value = cur_cliente_encontrado_mod.apaterno
.amaterno1.value = cur_cliente_encontrado_mod.amaterno
.fecha1.value = cur_cliente_encontrado_mod.f_alta
.fecha2.value = cur_cliente_encontrado_mod.f_captura
.cp1.value = cur_cliente_encontrado_mod.cp
.calle1.value = cur_cliente_encontrado_mod.calle
.numero1.value = cur_cliente_encontrado_mod.numero
.letra1.value = cur_cliente_encontrado_mod.letra
.interior1.value = cur_cliente_encontrado_mod.interior
.colonia1.value = cur_cliente_encontrado_mod.colonia
.ciudad1.value = cur_cliente_encontrado_mod.ciudad
.telefono1.value = cur_cliente_encontrado_mod.tel
.edo_cta1.value = cur_cliente_encontrado_mod.estado_cta
.observaciones1.value = cur_cliente_encontrado_mod.observaciones

*// previene errores con el numero de cliente
.cliente1.Enabled = .F.
.cmdconsulta.caption = "Re-Consulta"
.cmdconsulta.BackColor = RGB(255,255,128)
.Cmdbuscachico1.enabled = .F.
*// habilita el boton modificar
thisformset.formulario1.cmdModificar.Enabled = .T.

*// regresa al formulario
RETURN

ENDWITH
ENDIF

ENDIF
*// aqui no se encontro al cliente
MESSAGEBOX("El cliente no existe o es un numero invalido",64,"El cliente no existe o es un numero invalido")
RETURN

ahora tambien tengo un boton guardar en ese formulario tengo un metodo que despues de verificar ciertos errores actualiza los datos del cliente, aqui esta el codigo de actualizar datos del cliente

*// actualiza los datos del cliente
WITH Thisformset.formulario1
STORE ALLTRIM(.nombre1.value) TO upd_nombres
STORE ALLTRIM(.apaterno1.value) TO upd_apaterno
STORE ALLTRIM(.amaterno1.value) TO upd_amaterno
STORE .cp1.value TO upd_cp
STORE .calle1.value TO upd_calle
STORE .numero1.value TO upd_numero
STORE .letra1.value TO upd_letra
STORE .interior1.value TO upd_interior
STORE .colonia1.value TO upd_colonia
STORE .ciudad1.value TO upd_ciudad
STORE .telefono1.value TO upd_tel
STORE .observaciones1.value TO upd_observaciones
ENDWITH

*// realiza un update
*// nombres, apaterno, amaterno, cp, calle, numero, letra, interior, colonia, ciudad, tel, observaciones
LOCAL cliente_upd_now, nombre_corto_uff
STORE Thisformset.formulario1.cliente1.Value TO cliente_upd_now
STORE upd_nombres + " " + upd_apaterno + " " + upd_amaterno TO nombre_corto_uff
UPDATE clientesa SET nombres = upd_nombres, ;
apaterno = upd_apaterno, ;
amaterno = upd_amaterno, ;
cp = upd_cp, ;
calle = upd_calle, ;
numero = upd_numero, ;
letra = upd_letra, ;
interior = upd_interior, ;
colonia = upd_colonia, ;
ciudad = upd_ciudad, ;
tel = upd_tel, ;
observaciones = upd_observaciones, ;
nombre_cor = nombre_corto_uff;
WHERE clientesa.cliente == cliente_upd_now
*// termina la actualizacion y regresa el form a su estado anterior
MESSAGEBOX('Se actualizaron exitosamente los datos',64,'Se actualizaron exitosamente los datos')

*//-------------------------------------------
Thisformset.pon_modal
Thisformset.formulario1.cmdModificar.Init
Thisformset.formulario1.cmdModificar.Click

Asi de facil lo soluciono, funciona perfectamente y no hay ningun problema con nada en el form. espero te sirba, ademas el uso de update insert o del, te ayuda a practicar para otros motores de bases de datos.

Saludos desde Mexico.
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