FoxPro/Visual FoxPro - FoxPro 9 - formulario

 
Vista:
sin imagen de perfil

FoxPro 9 - formulario

Publicado por Federico (4 intervenciones) el 01/08/2012 19:43:23
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!!
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

FoxPro 9 - formulario

Publicado por many (332 intervenciones) el 02/08/2012 04:52:39
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
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

Si el campa codigo es numerico esta bien como està, pero si es charater debe hacerlo asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
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
 
endif

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

FoxPro 9 - formulario

Publicado por Federico (4 intervenciones) el 02/08/2012 20:23:33
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!!
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

FoxPro 9 - formulario

Publicado por neo (1604 intervenciones) el 02/08/2012 22:27:04
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!
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

FoxPro 9 - formulario

Publicado por neo (1604 intervenciones) el 02/08/2012 22:30:19
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!
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