FoxPro/Visual FoxPro - BOTONES NUEVO GRABAR MODIFICAR

   
Vista:

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Gabriel (2 intervenciones) el 23/05/2013 02:07:08
BOTONES NUEVO GRABAR MODIFICAR

Hola tengo una consulta y necesaria un guia para poder terminar mi base de datos

Tengo un formulario "AGENDA" en el cual tengo los siguientes campos:
-nº de turno
-nombre y apellido
-telefono
-fecha y horario
-area
-detalle

Y Tambien tengo los botones : NUEVO, GRABAR, MODIFICAR
PRIMERO, ULTIMO, ANTERIOR Y SIGUIENTE

Mi consulta mas es que cuando se abra el formulario los campos solo se vean y queden en "solo lectura" y que no se puedan modificar,
Solo poder modificarlo y habilitar los campos al momento de presionar el boton MODIFICAR, y luego al presionar el boton GRABAR, se guarde y tambien me bloquee los campos nuevamente dejandolo en solo lectura.

Espero que se entienda mi idea, y muchas gracias por la ayuda
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por neo (1601 intervenciones) el 23/05/2013 02:26:44
Lo voy hacer de la forma mas simple, aunque ahora yo utilizo metodos sobre todo cuando repito el codigo, pero esto es para vayas practicando:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Boton Nuevo (Evento click)
select mi_tabla
set order to codigo
go bott
thisform.text1.value=codigo+1  &&Esto es para que siempre te dé un turno mayor al anterior.
 
***limpiar los texbox
thisform.text2.value=""     && nombre y apellido
thisform.text3.value=""     && telefono
thisform.text4.value=""     && fecha y horario (yo separaría estos por aquello de las consultas)
thisform.text5.value=""     && area
thisform.text6.value=""    && detalle
 
***habilitar los textbox  (dejar inhabilitados desde el proyecto "enabled=.f.")
thisform.text2.enabled=.t.
thisform.text3.enabled=.t.
thisform.text4.enabled=.t.
thisform.text5.enabled=.t.
thisform.text6.enabled=.t.
 
thisform.text2.setfocus()
thisform.refresh
 
*****************************Fin codigo en boton nuevo
 
 
Boton Guardar (Evento click)
select mi_tabla
set order to codigo
seek thisform.text1.value
if found()
replace nombre with thisform.text2.value
replace telefono with thisform.text3.value
replace fecha with thisform.text4.value
replace area with thisform.text5.value
replace detalle with thisform.text6.value
 
wait window "Datos Actualizados con exito

else
append blank
replace turno with thisform.text1.value
replace nombre with thisform.text2.value
replace telefono with thisform.text3.value
replace fecha with thisform.text4.value
replace area with thisform.text5.value
replace detalle with thisform.text6.value

wait window "Datos Guardados con exito
 
preg1=messagebox("Desea agregar un nuevo registro?",4+32,"Atención")
if preg1=6
thisform.cmdnuevo.click()
thisform.refresh
else
***********inhabilitamos y limpiamos los textbos
***limpiar los texbox
thisform.text1.value=0
thisform.text2.value=""     && nombre y apellido
thisform.text3.value=""     && telefono
thisform.text4.value=""     && fecha y horario (yo separaría estos por aquello de las consultas)
thisform.text5.value=""     && area
thisform.text6.value=""    && detalle
 
***inhabilitar los textbox
thisform.text2.enabled=.f.
thisform.text3.enabled=.f.
thisform.text4.enabled=.f.
thisform.text5.enabled=.f.
thisform.text6.enabled=.f.
endif
endif
 
*********************Fin boton guardar
 
 
*******Boton modificar (evento click)
select *from mi_tabla order by turno into cursor cCons
if reccount()>0
select cCons
browse
thisform.text2.value=cCons.nombre
thisform.text3.value=cCons.telefono
thisform.text4.value=cCons.fecha
thisform.text5.value=cCons.area
thisform.text6.value=cCons.detalle
 
***habilitar los textbox  (dejar inhabilitados desde el proyecto "enabled=.f.")
thisform.text2.enabled=.t.
thisform.text3.enabled=.t.
thisform.text4.enabled=.t.
thisform.text5.enabled=.t.
thisform.text6.enabled=.t.
thisform.refresh
endif
**********************Fin Boton modificar



Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Gabriel (3 intervenciones) el 23/05/2013 06:32:45
Muchas gracias esmitado,funciona perfectamente, solo 2 consultas mas:

En el boton "GUARDAR" si bien en el codigo la ultima parte:

***inhabilitar los textbox
thisform.text2.enabled=.f.
thisform.text3.enabled=.f.
thisform.text4.enabled=.f
thisform.text5.enabled=.f.
thisform.text6.enabled=.f.
endif
endif

Esto me indicaria que al presionar el boton "GUARDAR" se bloqueen los campos nuevamente y queden en "solo lectura", pero nose que estoy haciendo mal, ya que los guarda, pero no bloquea los campos a " solo lectura"



--------------*------------------
la otra consulta es que al presionar el boton "NUEVO" el campo "ID_TURNO" es de solo lectura
Asi quedo el codigo del boton "NUEVO"

select turnos_agenda
set order to id_turno
go bott
thisform.text1.value=id_turno+1

***limpiar los texbox
thisform.text2.value="" && nombre y apellido
thisform.text3.value="" && telefono
thisform.text4.value="" && fecha y horario
thisform.text5.value="" && area
thisform.text6.value="" && detalle

thisform.text2.enabled=.t.
thisform.text3.enabled=.t.
thisform.text4.enabled=.t.
thisform.text5.enabled=.t.
thisform.text6.enabled=.t.
thisform.text2.setfocus()
thisform.refresh

Ya probe en restaurar el campo de "ID_TURNO" a enabled .v. pero lo mismo sigue diciendo:
el campo "ID_TURNO" es de solo lectura.
Solo estos 2 detalles me faltan para terminarlo, te agradeceria, Un abrazo estimado
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Gabriel (3 intervenciones) el 23/05/2013 06:54:04
Ya resolvi lo de boton Guardar para que queden nuevamente los campos de solo lectura.
Solo me faltaria lo del boton "Nuevo" Muchas gracias.
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Fidel (558 intervenciones) el 23/05/2013 15:28:56
Puedes crear un formulario como necesitas de una forma más natural a como trabaja Visual Fox, sin tener que utilizar Enabled ó Readonly.
Para esto se necesita un cursor paralelo que puede tener uno o ningún registro y se utilizan los controlSource de los objetos. Cuando el cursor asociado por ControlSource no tiene registros, los objetos quedan deshabilitados automáticamente.
Para el caso tuyo, como Idturno se coloca por código, va el seteo inicial de Text1.Enabled=.f.
Los demás quedan Enabled=.T.
Aca va un ejemplo de código, más o menos cercano a lo que estás usando, pero también bastante genérico.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
* Idea:
* Trabajar los datos en un cursor paralelo a la tabla
* y grabar después, ó cancelar
* Se supone bloqueo manual de tablas
***********************************************************
* Formulario con:
* 6 TextBox
* 2 Botones "Nuevo", "Modificar"
* 1 CheckBox "Quitar"
* 1 CommandGroup con 2 botones ("\<Aceptar","\<Cancelar")
* 1 METODO: Agregar un método al formulario llamado "GETZAP"
* --------------------------------------------------------
*	-nº de turno
*	-nombre y apellido
*	-telefono
*	-fecha y horario
*	-area
*	-detalle
*************************************************************
* Las referencias por parent nos permiten utilizar el mismo
* código aunque los objetos se coloque en un container
* Lo único que es necesario cambiar, es en el Init del form,
* la referencia de ControlSource e inicialización.
 
 
**************************************************************
 
*---------------------
*init del formulario
*---------------------
* Apertura de la tabla
if !used("AGENDA")
	copen=addbs(cDir)+"agenda"
	use (cOpen) IN 0 SHARED
ENDIF
 
* 1 Crear un cursor clon de la tabla.
* SE le agregan dos campos de control
AFIELDS(gaCampos,"AGENDA")
IF USED("FAGENDA")
	SELECT FAGENDA
	USE
ENDIF
CREATE CURSOR FAGENDA FROM ARRAY GACAMPOS
ALTER table fagenda ;
ADD COLUMN "Ph_rec" I;
ADD COLUMN "PH_DEL" L
 
WITH thisform
	* Acá se supone que se toman los campos de la tabla
	* en el orden en que están
	*
	* Alternativamente se indican en forma manual
	* .TExt1.ControlSource='fagenda.idturno'
	* .TExt2.ControlSource='Fagenda.nombre' 
	* etc
	*
 
	FOR i=1 TO 6
		cText="Text"+LTRIM(STR(i))
		cField=FIELD(i)
		.&cText..ControlSource='fagenda.&cField.'
	NEXT
	.Check1.ControlSource='fagenda.ph_del'
	.Text1.Enbled=.f.
	.Commandgroup1.Setall("Enabled",.f.)
	.Command1.Enabled=.t.
	.Command2.Enabled=.t.
	.Check1.Enabled=.f.
ENDWITH
 
*-------------------------
* UNLOAD del form
*-------------------------
* borrar el cursor
IF USED("FAGENDA")
	SELECT FAGENDA
	USE
ENDIF
 
 
*-------------------------
* Boton "Nuevo" (click)
*-------------------------
set order to id_turno
go bott
nTurno=id_turno+1
SELECT fagenda
APPEND BLANK
replace idturno with nTurno
WITH this.Parent
	FOR i=1 TO 6
		cText="text"+LTRIM(STR(i))
		.&cText..refresh
	NEXT
	.Check1.refresh
	.Command2.Enabled=.f.
	.Check1.Enabled=.t.
	.Commandgroup1.Setall("Enabled",.t.)
ENDWITH
this.Enabled=.f.
this.Parent.text2.SetFocus()
 
*-------------------------
* Boton "Modificar" (click)
*-------------------------
SELECT agenda
BROWSE
NREC=RECNO()
SCATTER memvar
SELECT fagenda
ZAP
INSERT INTO fagenda FROM memvar
REPLACE PH_REC WITH RECNO("AGENDA")
WITH this.Parent
	FOR i=1 TO 6
		cText="text"+LTRIM(STR(i))
		.&cText..refresh
	NEXT
	.Check1.refresh
	.Command1.Enabled=.f.
	.Check1.Enabled=.t.
	.Commandgroup1.Setall("Enabled",.t.)
ENDWITH
this.Enabled=.f.
this.Parent.text2.SetFocus()
 
 
*-------------------------
* CommandGroup1.Buttons(1)
*-------------------------
SELECT FAGENDA
NREG=FAGENDA.PH_REC
LDEL=FAGENDA.PH_DEL
 
IF LDEL
	* SI LDEL=.T. Y NREG=0 no hace nada
	IF !EMPTY(NREG)
		* BORRA EL REGISTRO
		SELECT AGENDA
		GO NREG
		IF RLOCK()
			DELETE
			UNLOCK
		ENDIF
 
	ENDIF
 
ELSE
	SELECT FAGENDA
	SCATTER MEMVAR
 
	IF EMPTY(NREG)
		* AGREGA UN REGISTRO
		INSERT INTO AGENDA FROM MEMVAR
		SELECT AGENDA
		UNLOCK
	ELSE
		* MODIFICA REGISTRO
		SELECT AGENDA
		GO NREG
		IF RLOCK()
			GATHER MEMVAR
 
			UNLOCK
		ENDIF
 
	ENDIF
ENDIF
thisform.getZap(this.parent.parent)
 
*-------------------------
* CommandGroup1.Buttons(2)
*-------------------------
* Cancelar
*
thisform.getZap(this.parent.parent)
 
 
 
*-------------------------------
* METODO GETZAP (del formulario)
*-------------------------------
lparameters xoBj
SELECT FAGENDA
ZAP
WITH xobj
	FOR i=1 TO 6
		cText="text"+LTRIM(STR(i))
		.&cText..refresh
	NEXT
	.Check1.refresh
	.Command1.Enabled=.t.
	.Command2.Enabled=.t.
	.Check1.Enabled=.f.
	.Commandgroup1.Setall("Enabled",.f.)
ENDWITH
* --------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

BOTONES NUEVO GRABAR MODIFICAR

Publicado por neo (1601 intervenciones) el 24/05/2013 00:18:14
Quieres habilitar el campo de turno? es decir, thisform.text1.enabled=.t.

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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por kim (2 intervenciones) el 17/09/2013 19:34:15
puedes ayudarme Neo]
yo tengo un forfulario que se llama categoria
tengo 2 label uno llamado codigo y el otro llamado nom_categoria eh tomado el codigo de nuevo preo no me funciona me da un error donde dice que no se encuentra la variable codigo soy nueva en esto de VFP y no entiendo mucho.
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por juan carlos sanchez (1 intervención) el 04/11/2014 23:31:32
hola buenas tardes tengo unas dudas acerca de como crear unos botones en vfp9... yo estoy intentando crear un sistema bancario que me guarde números de cuentas retiros depósitos transacciones pero no se como crear el botón para procesar toda la información. aparte en el botón guardar no me da la ruta de acceso al formulario. me dice que es errónea. espero puedan ayudarme con eso
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Fidel José (558 intervenciones) el 05/11/2014 00:11:06
1) Sería mejor que te abras un hilo nuevo con tu tema
2) Dile al grupo si trabajas con VFP 9 o qué. En Visual Fox 9 no necesitas crear un botón, aunque puedes hacerlo. Lo puedes traer desde las clases de base.
3) Por otro lado dices que "en el botón guardar no me da la ruta de acceso...", Pregunto:
3.1) Entonces ya sabes como crear un botón?
3.2) Se supone que el botón está en el formulario, para qué quieres la ruta de acceso al formulario?. O necesitas saber otra cosa?

En fin, trata de ser un poco más específico. Problema por problema.
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Jorge (1 intervención) el 23/10/2015 03:42:39
Como resolviste lo del botón guardar
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Brenda (2 intervenciones) el 27/12/2015 22:21:21
Buenas me podrían ayudar con mi base de datos

Tengo un formulario "Notas" en el cual tengo los siguientes campos:
-cedula
-nombre y apellido
-corte1
-corte2
-corte3
-corte4
-nota final

Y Tambien tengo los botones : NUEVO, GUARDAR, MODIFICAR
PRIMERO, ULTIMO, ANTERIOR Y SIGUIENTE
Necesito los códigos de los botones gracias
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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por Juan R. (100 intervenciones) el 28/12/2015 00:44:15
Buenas Brenda

Tienes el código más o menos para orientarte que han puesto neo y Fidel, si tienes alguna duda aquí estamos, pero al menos molestaste en consultar un poco las contestaciones de los que saben.

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

BOTONES NUEVO GRABAR MODIFICAR

Publicado por fredy alexander falex.ss14@gmail.com (1 intervención) el 07/03/2014 22:03:28
que tal nose si alguien me puede ayudar tengo problemas con el codigo
de guardar, eliminar , modificar, buscar desde mi formulario hacia mi tabla

alguien me puede pasar ese codigo , un ejemplo para yo analizar porfavor
es en visual fox 6.0
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