FoxPro/Visual FoxPro - Crear un boton guardar

 
Vista:

Crear un boton guardar

Publicado por sara (15 intervenciones) el 13/08/2007 22:05:01
Bueno amigos de este gran foro, lo que necesito es poder guardar informacion en una tabla pero no desde el boton guardar que por defecto se crea cuando hacemos un formulario con el asistente! lo que necesito es poder tener los botones de guardar, nuevo, modificar, pero hechos no los que pone por defecto! como o que codigo debo de poner en cada uno!

por favor ayuda!!

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

RE:Crear un boton guardar

Publicado por HELDER MARTINEZ (8 intervenciones) el 13/08/2007 22:50:06
EN ESTA WEB ENCONTRARAS MUCHOS EJEMPLOS COMO HACERLO

www.portalfox.com
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:Crear un boton guardar

Publicado por Plinio (7841 intervenciones) el 14/08/2007 13:19:03
Aquí es donde las preguntas fáciles se vuelven difíciles de responder. Te recomiendo algunas cosas:
1- Trata de no usar el Wizard, aunque pueden ser prácticos para algunas cosas te complican la vida y no te dan facilidades sencillas de modificación.

2- En VFP existen muchas maneras de manejar los datos, es decir en el caso de grabar todo puede cambiar de acuerdo a la forma en que manejes los datos, por ejemplo:
a) Si usas Scatter/Gather.
b) si usas Append blank con REPLACE
c) si usas INSERT INTO
d) si usas buffering (TABLEUPDATE, TABLEREVERT...)

3- Averigua cual seria mas facil para ti y veras que te podemos dar mejores repuestas.
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

RE:Crear un boton guardar

Publicado por neo (1604 intervenciones) el 14/08/2007 15:34:43
Te recomiendo el "Append Blank" junto con "Replace", ejemplo:

1
2
3
4
5
6
7
8
9
10
11
Select Mi_tabla.dbf
Locate for upper(nombre)=Alltrim(Thisform.text1.value)
If Found() Then
Replace Nombre With Thisform.text1.value
else
go bott
Append Blank
Replace Nombre With Thisform.text1.value
endif
 
Wait Window "Datos Actualizados" Timeout .8

**************************
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:Crear un boton guardar

Publicado por Angie (8 intervenciones) el 04/04/2013 02:10:04
Hola neo aqui leyendo los post de todos y di con este pues puse manos a la obra y usando como ejemplo lo que indicas arriba pues aqui esta mi codigo pero no correo no se si me salte algo o esta mal mi codigo en alguna parte

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT catcos.dbf
LOCATE FOR UPPER(cliente) = ALLTRIM(thisform.maqUILERO1.Value)
IF FOUND() THEN
 Replace cliente WITH thisform.maqUILERO1.Value
 Replace estilo WITH thisform.esTILO1.Value
 Replace costo WITH thisform.cosTO1.Value
 Replace codigo WITH thisform.proCESO1.Value
ELSE
 GO BOTT
 APPEND BLANK
 Replace cliente WITH ALLTRIM(thisform.maqUILERO1.Value )
 Replace estilo WITH thisform.ESTILO1.Value
 Replace costo WITH thisform.cosTO1.Value
 Replace codigo WITH thisform.proCESO1.Value
ENDIF
 
WAIT WINDOW "Datos actualizados" TIMEOUT.8


como vez, algún comentario?
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:Crear un boton guardar

Publicado por carolina (1 intervención) el 18/07/2015 01:54:50
buenas tarde por favor necesito su ayuda, no se que estoy haciendo mal este es mu codigo para el boton guardar el problema es que siempre se va a laopcion verdadero del if aunque el registro sea nuevo y solo me remplaza el ultimo registro, no he podido agregar registros nuevos ayuda plis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT contacto
SET ORDER TO id
SEEK THISFORM.Text1.value
If Found() Then
	REPLACE nombre WITH THISFORM.Text2.VALUE
	REPLACE telefono WITH THISFORM.Text2.VALUE
	WAIT WINDOWS "DATOS ACTUALIZADOS CON EXITO"
ELSE
	go bott
	APPEND BLANK
	REPLACE nombre WITH THISFORM.Text2.VALUE
	REPLACE telefono WITH THISFORM.Text2.VALUE
	WAIT WINDOWS "DATOS GUARDADOS CON EXITO"
	preg1=messagebox("¿Desea Agregar Un Nuevo Registro?",4+32,"ATENCIÓN")
	IF preg1=6
		THISFORM.Command1.CLICK()
		THISFORM.REFRESH
	ELSE
		THISFORM.Text1.VALUE=0
		THISFORM.Text2.VALUE=""
		THISFORM.Text3.VALUE=""
		THISFORM.Text2.ENABLED=.F.
		THISFORM.Text3.ENABLED=.F.
	ENDIF
ENDIF
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
Val: 59
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Crear un boton guardar

Publicado por Juan (114 intervenciones) el 19/07/2015 01:34:27
Buenas Carolina

A bote pronto, yo veo dos cosas que podrían mejorar el código que deberías probar y quizás te resuelvan el problema.

1) Después de la instrucción "SET ORDER TO id", la siguiente línea que podría yo es: SET EXACT OFF

2) Para asegurarse que coinciden los registros probaría a hacer esto:

SEEK ALLTRIM(THISFORM.Text1.value)

quizás simplemente con quitar los espacios en blanco ya te lo solucione.

Un saludo y espero que te sirva
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
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Crear un boton guardar

Publicado por Fidel José (657 intervenciones) el 19/07/2015 19:03:13
1) Usa Indexseek en lugar del comando SEEK (obsoleto)
2) Fijate que tanto en teléfono como en nombre estás reemplazando por el mismo valor.
3) Si creas un registro nuevo, tienes que preocuparte del "ID". De lo contrario agregarás registros que luego no se encuentran o no encuentran su relación.
4) El Id no debe ser elegido por el usuario. Nuncas se sabe lo que va a poner. Puedes elegir entre varios métodos para crear tu propio ID.
5) En lugar de Append blank + replace, utiliza INSERT INTO para agregar datos.
6) No pongas instrucciones como Thisform.CmNuevo.click(). El código debe estar en un método del form, al que se puede ir con el click de un botón o por otro proceso (thisform.miMetodo() )
7) Deja que el usuario decida si va a agregar un registro nuevo o no, con el correspondiente botón de nuevo. Si quieres darle mayor comodidad, puedes usar las teclas de función (.keypress , .keypreview).
8) Trata de aprender desde el inicio la programación para tablas compartidas. En este caso presento bloqueo manual de registros, pero también puedes utilizar Buffering con TableUpdate(.T.) para guardar los cambios.
9) No pongas Thisform.Refresh por cualquier cambio. El método Refresh tiene sentido solamente si tienes controles liados por "ControlSource" y solamente si los valores de las propiedades o cursores liados han cambiado, de lo contrario no hace más que retardar la interfaz. Y cuando necesites utilizar Refresh (caso tipico el control Grid) utiliza la referencia específica: Thisform.Grid1.REfresh, thisform.text1.refresh. Especialmente si utilizas pageframe, el refresh debe ser por cada Objeto Page.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
lcSearch = ALLTRIM(thisform.text1.value)
lcNombre = thisform.text2.value
lcTelefono = thisform.text3.value  && "??  no puede ser Text2.value porque ya es nombre"
 
IF !INDEXSEEK(m.lcSearch,.f.,"CONTACTO","ID")
	INSERT INTO CONTACTO (id,nombre,telefono) VALUES (m.id,m.lcNombre,m.lcTelefono)
ELSE
        SELECT CONTACTO         && para poner un replace, siempre seleccionar la tabla
                                                        && "REPLACE IN" no es recomendable. Mejor que eso, UPDATE SQL.
	INDEXSEEK(m.lcSearch,.t.,"CONTACTO","ID")
	IF RLOCK()
		REPLACE NOMBRE WITH m.lcnombre,;
			telefono WITH m.lcTelefono
	ENDIF
ENDIF
UNLOCK IN contacto
FLUSH                                     && acostúmbrate a bajar el cache después de efectuar cambios. Te evitarás problemas.
 
WITH thisform
	.Text1.VALUE=0
	.Text2.VALUE=""
	.Text3.VALUE=""
	.Text2.ENABLED=.F.
	.Text3.ENABLED=.F.
ENDWITH
thisform.text1.setfocus       && opcional
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:Crear un boton guardar

Publicado por Alfredo (1 intervención) el 14/07/2019 20:10:44
Todo esta bien , pero lo que nadie me dice es lo siguiente el 60% de un programa es el diseño , es decir el entorno grafico del sistema que vas utilizar para hacerlo mas agradable y fluido , el problema de Visual Foxpro que para crear un bottom tienes que utilizar un Formulario y eso no es exactamente asi ´que pasa si quiero utilizar toda la pantalla sin necesidad de formularios , solo para casos especificos y quiero utilizar botones para seleccion de menus en diferentes sitios de la pantalla... Gracias por el Dato si es que lo tienen xD
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
Val: 115
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Crear un boton guardar

Publicado por Luis (42 intervenciones) el 18/07/2019 05:09:56
Bien Alfredo te invito a que veas este pequeño ejemplo en donde hay unos botones el cual te dice como guardar información
https://visualfoxprogram.blogspot.com/2019/06/control-de-clientes-en-visual-foxpro.html
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:Crear un boton guardar

Publicado por Juan (3 intervenciones) el 19/07/2019 13:42:30
Si no quieres usar botones también puedes utilizar el comando onkey label q evalúa que tecla presionas y sobre q objeto para disparar el código en este caso guardar por otro lado en el código q usas el programa debiera mostrarte primero que el dato existe para que decidas continuar llenando o no los campos restantes posteriormente al grabarlos primero eliminando el anterior y añadiendo los nuevos datos slds jpp
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