FoxPro/Visual FoxPro - pasar datos de textbox a grid.

 
Vista:

pasar datos de textbox a grid.

Publicado por Tamara (2 intervenciones) el 15/09/2012 20:20:34
Hola gente, estoy haciendo la tesis de mi carrera y necesito ayuda para pasar datos ingresados de varios textbox´s (algunos datos se ingresan en el momento y otros datos los traigo de otra tabla.) a una grilla. Alguna sugerencia o idea que me tiren?. 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
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

pasar datos de textbox a grid.

Publicado por Fidel (657 intervenciones) el 16/09/2012 17:50:38
Un control grid es un objeto asociado a una tabla ó cursor.
Un control TextBox, puede ser un elemento asociado a una propiedad, una variable, un campo de una tabla, una posición de matriz.. O a Nada.
Los valores que recoges en los Textbox, deben tener algún campo de la tabla asociada al control grid.
Supongamos que tenemos un cursor ó tabla con 3 campos:
Nombre de cursor: "TABLA"
"Describe" C(40), "valor" N(12,2), "Fecha" D
* Supongamos un control grid llamado Grid1 y 3 TextBox (text1, text2, text3)
With thisform.Grid1
.RecordSource="tabla"
.ColumnCount=3
.SetAll("DynamicBackColor","IIF(MOD(RECNO( ), 2)=0, RGB(233,232,228),RGB(217,220,212))", "Column")
.Setall("Readonly",.t.,"Column") && impide que se escriba en la cuadrícula
.Setall("Fontsize",8,"Column") && opcional
.Setall("Fontsize",8,"Header") && opcional
.Setall("FontBold",.t.,"Header") && opcional
.Setall("BackColor",Rgb(73,136,160),"Header") && opcional
.Setall("ForeColor",Rgb(255,255,255),"Header") && opcional
.Columns[1].ControlSource='tabla.Describe'
.Columns[2].ControlSource='Tabla.Valor'
.Columns[2].InputMask='999,999.99"
.Columns[3].ControlSource='Tabla.Fecha'
.Columns[3].Format="D"
endwith
with thisform
.Text1.ControlSource='tabla.Describe'
.Text1.Maxwidth=40
.Text2.ControlSource='tabla.Valor'
.Text2.Format="Z"
.Text2.inputMask="999,999.99"
.Text3.ControlSource='Tabla.Fecha'
.Text3.Format="D"
endwith
Ahora va
[ Grid1 Evento AfterRowColumnChange ]
* Cada movimiento en la cuadrícula se refleja en los TextBox
With thisform
.Text1.refresh
.Text2.REfresh
.Text3.REfresh
Endwith
[ En el LostFocus de cada TextBox ]
* Cuando cambies el valor en un textbox, se reflejará en la cuadrícula
* y también tendrá actualizado el Cursor.
Thisform.Grid1.REfresh

Ahora bien, si dejas los controles TextBox, sin asociar al cursor ó tabla, tienes que decidir el pase de los valores a la tabla
Por ejemplo, en el LostFocus del TextBox, pones
select tabla
replace (campo) with this.value
thisform.grid1.refresh
donde (campo) debe ser reemplazado por el campo de la tabla que se quiere actualizar.
Sin embargo, este método no me parece recomendable. Deberías asignar correctamente los Format y esperar que no se produzcan problemas por asignación de valor (distinto tipo de dato).

También se pueden crear propiedades afines.
With thisform
.AddProperty("Describe","")
.ADdproperty("Valor",0)
.AddProperty("Fecha", Ctod("") )

.Text1.ControlSource='Thisform.Describe'
.Text1.Maxwidth=40
.Text2.ControlSource='Thisform.Valor'
.Text2.Format="Z"
.Text2.inputMask="999,999.99"
.Text3.ControlSource='Thisform.Fecha'
.Text3.Format="D"
endwith
Esto funciona igual que en el caso de no asociar nada a los TextBox.
Las propiedades .Describe, .Valor y .FEcha, se asumen al actualizar los textBox, recién después del LostFocus por lo que no puedes mencionar ese valor antes.
Pero en algunos casos tiene importancia hacerlo de ese modo. Por ejemplo, puede ocurrir que no pongas ningún código en los lostFocus de los control TextBox, pero incluyes un botón de actualización. Cuando ya modificaste los valores necesarios, con click sobre el botón actualizas la cuadrícula. Y el código del botón es:

[ Evento Click del botón de Actualización.]
* Acá se pueden hacer validaciones
if empty(thisform.fecha)
messagebox("Ingrese la fecha de operación")
Thisform.Text3.SEtfocus
Return
endif
if Empty(thisform.Valor)
Messagebox("Ingrese el valor de la operación")
Thisform.Text2.Setfocus
Return
endif
* Si supera la validación, actualiza la tabla y refresca la cuadrícula
select tabla
replace describe with thisform.Describe,;
Valor with Thisform.Valor,;
FEcha with Thisform.Fecha
Thisform.Grid1.REfresh
Thisform.Grid1.SetFocus && opcional



Suerte con la tesis!
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

pasar datos de textbox a grid.

Publicado por Tamara (2 intervenciones) el 18/09/2012 23:36:42
Muchas gracias por tu respuesta!!! Fue de mucha ayuda y pude solucionar mi problema. Saludos , buena vida
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