FoxPro/Visual FoxPro - FoxPro 9 - formulario
hola, mi pregunta va referida a los formularios y su seteo. primero necesito sabes como puedo evitar registros duplicados, es decir que al ingreser un registro nuevo compruebe si este ya existe y en caso de q existe no permita grabarlo. Otra cosa que necesito sabes es como puedo hacer para que cuando aprete el boton de añadir un nuevo registro se seleccione el primer campo para ingresar los datos por teclado de forma automatica. agradeceria una pronta respuesta.. MUCHAS GRACIAS!! También te puede interesar...
Bien, 1.- Suponiendo que tiene un campo clave en la tabla llamado codigo y en el formulario tambien se llama codigo y la tabla se llama clientes. en el evento clic del un boton debe hacer lo siguiente: select clientes
locate for codigo = thisform.codigo.value
if !found()
append blank
replace nombre with thisform.nombre.value
replace direccion with thisform.direccion.value
etc.
else
replace nombre with thisform.nombre.value
replace direccion with thisform.direccion.value
endifSi el campa codigo es numerico esta bien como està, pero si es charater debe hacerlo asi: select clientes
locate for alltrim(codigo) =alltrim( thisform.codigo.value)
if !found()
append blank
replace nombre with thisform.nombre.value
replace direccion with thisform.direccion.value
etc.
else
replace nombre with thisform.nombre.value
replace direccion with thisform.direccion.value
endifYa ponle lo que quiera pero este es el esqueleto y funciona si no encuentra el registro agrega un registro y lo rellena con la orden REPLACE, si lo encuentra puede usarlo para modificar sin usar la orden APPEND BLANK y lo mata ahi mismo. si no entiende algo dimelo y te aclaro rapidamente. 2.- solo debe saber como se el campo en la propiedad name, si se llama codigo lo hace asi: thisform.codigo.setfocus return y listo si tiene algo mas ponlo en foro y vere si puedo ayudar.
muchisimas gracias ! me sirvio muchisimo... por ahora no tengo dudas, continuare con mi programa y ya vere que duda me surge y seguramente estare escribiendo! saludos!!
many, creo que el codigo está mal escrito, Que yo sepa el Append Blank crea un nuevo registro en blanco al final de una tabla. Tu ejemplo: select clientes locate for codigo = thisform.codigo.value if !found() append blank replace nombre with thisform.nombre.value replace direccion with thisform.direccion.value etc. else replace nombre with thisform.nombre.value replace direccion with thisform.direccion.value endif Yo lo haria asi: select clientes set order to codigo seek thisform.txtclave.value if found() replace nombre with thisform.nombre.value replace direccion with thisform.direccion.value wait window "Datos ACTUALIZADOS con éxito" else APPEND BLANK replace nombre with thisform.nombre.value replace direccion with thisform.direccion.value wait window "Datos Guardados con éxito" endif La diferencia de "locate" y "Seek" es impresionante a la hora de trabajar en red. Saludos!
Se me pasó un detalle de tu codigo: Lo entendí asi: If !found() Si no encuentra el codigo crear else si no lo encuentra solo reemplazar endif Es que siempre lo hago asi: If Found() Si lo encuentra, solo reemplazar else si no lo encuentra crear y reemplazar. endif Saludos! Enviar copia del movimiento diario de stock y ventas a distancia + almacen VFP 6.0 CURSORES Y ACCESS |