Actualizar Grid después de Insert...

3,518 views
Skip to first unread message

Arturo Ramos

unread,
Jun 21, 2011, 12:24:28 PM6/21/11
to Comunidad de Visual Foxpro en Español
Hola Foro,

Tengo este detalle con varios grids, en realidad no es un
error pero no es el comportamiento que quiero que tenga o
deber�a tener; me explico...

Tengo un grid (ver imagen) que lleno con este c�digo en el
boton agregar:

INSERT INTO tablas (clave, de, a, descuento) ;
VALUES (prov.clave,
ThisForm.pageframe1.pgTabla.txtRangoDe.Value, ;
ThisForm.pageframe1.pgTabla.txtRangoA.Value,
ThisForm.pageframe1.pgTabla.txtDesc.Value )

ThisForm.pageframe1.pgTabla.grid1.Refresh

ThisForm.pageframe1.pgTabla.txtRangoDe.Value = 0.00
ThisForm.pageframe1.pgTabla.txtRangoA.Value = 0.00
ThisForm.pageframe1.pgTabla.txtDesc.Value = 0.00

ThisForm.pageframe1.pgTabla.txtRangoDe.SetFocus

=

Inserto el primer registro y todo bien, se muestra en el
grid y e regresa al textbox 'DE:' para escribir otro rango,
lo escribo y todo bien, se muestra en el grid y regresa a
'DE:', pero al poner el tercero y de ah� en adelante ya no
se muestran en el grid los valores que estoy insertando,
para verlos tengo que hacer click sobre el grid y se
muestran, regreso a los rangos escribo los valores, hago
click en agregar y no se muestra en el grid, para verlo
tengo que hacer click... alguno de esos toques m�gico en los
que ustedes son expertos ??

Notas: VFP 7.0, son DBF, estan en buffermodeoverride = 5, es
tabla secundara esta relacionada con una tabla principal.

Saludos.

Arturo Ramos
www.ircsasoftware.com.mx
Canc�n, M�xico

pantalla_grid

Miguel Canchas

unread,
Jun 21, 2011, 12:38:54 PM6/21/11
to publice...@googlegroups.com
Hazle un thisform.refresh

MK


-----Mensaje original-----
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Arturo Ramos
Enviado el: martes, 21 de junio de 2011 11:24 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Actualizar Grid después de Insert...

Hola Foro,

Tengo este detalle con varios grids, en realidad no es un
error pero no es el comportamiento que quiero que tenga o

debería tener; me explico...

Tengo un grid (ver imagen) que lleno con este código en el
boton agregar:

INSERT INTO tablas (clave, de, a, descuento) ;
VALUES (prov.clave,
ThisForm.pageframe1.pgTabla.txtRangoDe.Value, ;
ThisForm.pageframe1.pgTabla.txtRangoA.Value,
ThisForm.pageframe1.pgTabla.txtDesc.Value )

ThisForm.pageframe1.pgTabla.grid1.Refresh

ThisForm.pageframe1.pgTabla.txtRangoDe.Value = 0.00
ThisForm.pageframe1.pgTabla.txtRangoA.Value = 0.00
ThisForm.pageframe1.pgTabla.txtDesc.Value = 0.00

ThisForm.pageframe1.pgTabla.txtRangoDe.SetFocus

=

Inserto el primer registro y todo bien, se muestra en el
grid y e regresa al textbox 'DE:' para escribir otro rango,
lo escribo y todo bien, se muestra en el grid y regresa a

'DE:', pero al poner el tercero y de ahí en adelante ya no

se muestran en el grid los valores que estoy insertando,
para verlos tengo que hacer click sobre el grid y se
muestran, regreso a los rangos escribo los valores, hago
click en agregar y no se muestra en el grid, para verlo

tengo que hacer click... alguno de esos toques mágico en los

que ustedes son expertos ??

Notas: VFP 7.0, son DBF, estan en buffermodeoverride = 5, es
tabla secundara esta relacionada con una tabla principal.

Saludos.

Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México

pantalla_grid

Arturo Ramos

unread,
Jun 21, 2011, 12:57:03 PM6/21/11
to publice...@googlegroups.com
Gracias Miguel pero nada... eso ya lo intente aun puesto en diferentes lugares, al inicio, después del insert, después del refresh del grid, al final, en varios lugares y... nada.

Este es un detalle que tengo en diferentes grids de diferentes aplicaciones donde hago la captura de esta manera.

Saludos.

Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.
ayuda.png

Daniel Sánchez

unread,
Jun 21, 2011, 1:51:17 PM6/21/11
to publice...@googlegroups.com
te has fijado si esta activa el área de la tabla donde insertas el registro, tal vez por estar en otra área no refresca correctamente el grid después de insertar el registro nuevo.


--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Yvan GMAIL

unread,
Jun 21, 2011, 1:54:15 PM6/21/11
to publice...@googlegroups.com

Ayuda si desenlazas y vuelves a enlazar al Grid. Por “recordSource”?

Osea. Antes de llenar la data

Thisform.grilla.recordSource = “”

 

Luego de llenar la data

Thisform.grilla.recordSource = “MiTabla”

Thisform.grilla.refresh

Arturo Ramos

unread,
Jun 21, 2011, 2:21:11 PM6/21/11
to publice...@googlegroups.com
Hola Daniel,

Aun seleccionando la tabla 'tablas' antes del insert no funciona, el resultado es el mismo.

Gracias...

Arturo Ramos

unread,
Jun 21, 2011, 2:25:59 PM6/21/11
to publice...@googlegroups.com
Menphis,

Ayuda pero no sirve, la tabla tiene 4 campos y solo muestro en el grid 3 de ellos, al regresar el recorsource me pone en las columnas disponibles ( 3)  los campos en el orden que esta en la tabla, sería entrar al controlsource de cada columna y referenciar al correcto, en este caso son 3 de 4 pero tengo grids con 10 de 20 o cosas así, mucho rollo... a ver, si no hay otra propuesta creo no quedará de otra...

Saludos.

GeoSys Diseño de Software

unread,
Jun 21, 2011, 2:50:55 PM6/21/11
to publice...@googlegroups.com
Buenas, yo cuando ingreso un registro inmediatamente enfoco la grid y refrescas y vuelvo al texbox e inmediatamente queda reflejados los cambios.

ejemplo:

insert into xxxxx
thisform.grid1.setfocus
thisform.refresh
thisform.text1.setfocus

saludos

Anthony Contreras Peralta

Costa Rica.

Antonio Meza

unread,
Jun 21, 2011, 3:39:14 PM6/21/11
to publice...@googlegroups.com
Hola!!
 
Eso pasa en todas las versiones de Fox!! yo hago lo siguiente, en este orden, y ve el resultado.
 
Select MyTabla
Insert Into .......
go recno()
thisform.grid.refresh
thisform.grid.column1.setfocus
 
y luego regresas a tu textbox

ThisForm.pageframe1.pgTabla.txtRangoDe.SetFocus

Nota: Cuando haces deseas eliminar y no se quitan de tu grid haces lo mismo solo que en vez de GO RECNO() mandas un GO TOP
 
 
saludos
Antonio Meza

Norberto

unread,
Jun 21, 2011, 3:52:20 PM6/21/11
to Comunidad de Visual Foxpro en Español
En tu grafico veo que el puntero de registro esta en otro registro.
Propongo lo siguiente:

lnOldSelect = SELECT()
SELECT MyTabla
lnOldRecNo = IIF(EOF(), 0, RECNO())
* RECNO() devuelve 1 si no hay registros,entonces EOF() evita el error
GO 1 si no hay registros
INSERT INTO ......
IF lnOldRecNo <> 0
GO lnOldRecNo
ENDIF
IF !EMPTY(lnOldSelect)
SELECT (lnOldSelect)
ENDIF

Roberto Matarrita

unread,
Jun 21, 2011, 6:59:36 PM6/21/11
to publice...@googlegroups.com
Arturo yo lo que hago en estos casos es:
 
1. Realizo el inserter primero.
2. Luego seguidamente de que hago el insert hago un thisform.grid1.recordsource ="select campos a mostrar from tabla o tablas where condicion into cursor datos"
 
Con solo esto yo he logrado hacer esos aue deseas.
Claro en el recordsource type tienes que poner que es un SQL
 
 
Roberto
Costa Rica.


 
El 21 de junio de 2011 18:24, Arturo Ramos <irc...@gmail.com> escribió:
Hola Foro,

Tengo este detalle con varios grids, en realidad no es un error pero no es el comportamiento que quiero que tenga o debería tener; me explico...

Tengo un grid (ver imagen) que lleno con este código en el boton agregar:


INSERT INTO tablas (clave, de, a, descuento) ;
   VALUES (prov.clave, ThisForm.pageframe1.pgTabla.txtRangoDe.Value, ;
   ThisForm.pageframe1.pgTabla.txtRangoA.Value, ThisForm.pageframe1.pgTabla.txtDesc.Value )

ThisForm.pageframe1.pgTabla.grid1.Refresh

ThisForm.pageframe1.pgTabla.txtRangoDe.Value = 0.00
ThisForm.pageframe1.pgTabla.txtRangoA.Value = 0.00
ThisForm.pageframe1.pgTabla.txtDesc.Value = 0.00

ThisForm.pageframe1.pgTabla.txtRangoDe.SetFocus

=

Inserto el primer registro y todo bien, se muestra en el grid y e regresa al textbox 'DE:' para escribir otro rango, lo escribo y todo bien, se muestra en el grid y regresa a 'DE:', pero al poner el tercero y de ahí en adelante ya no se muestran en el grid los valores que estoy insertando, para verlos tengo que hacer click sobre el grid y se muestran, regreso a los rangos escribo los valores, hago click en agregar y no se muestra en el grid, para verlo tengo que hacer click... alguno de esos toques mágico en los que ustedes son expertos ??


Notas: VFP 7.0, son DBF, estan en buffermodeoverride = 5, es tabla secundara esta relacionada con una tabla principal.

Saludos.

Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México

pantalla_grid

Arturo Ramos

unread,
Jun 21, 2011, 8:47:16 PM6/21/11
to publice...@googlegroups.com
Gracias Antonio,

Si es un comportamiento de VFP en todas sus versiones, programo en 7.0 y en 9.0 y recuerdo que en 6.0 también pasa.

Bien, esto me funciona, no es un gran problema pero nunca falta el usuario que pregunta: por qué tengo que darle click a la lista para que se vea ??

Cuál será la razón de este comportamiento ?, por que los primeros si salen pero después deja de salir... bueno esa es otra duda. gracias de nuevo.

Saludos.

Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

Arturo Ramos

unread,
Jun 21, 2011, 8:49:29 PM6/21/11
to publice...@googlegroups.com
Gracias por su tiempo a todos.

PERU CREATIVE

unread,
Jan 12, 2017, 4:55:39 PM1/12/17
to Comunidad de Visual Foxpro en Español

Hola Arturo,


Buenas a todos, el motivo de mi publicación fuera de fecha, ya que esta publicación es antigua, Yo también estaba buscando la respuesta al mismo problema con el cual te topaste hace ya bastante tiempo, y quería compartirlo la solución que encontré con la comunidad:

 

https://support.microsoft.com/es-es/kb/131836

Para que la cuadrícula muestre correctamente los datos, coloque el siguiente comando como la última línea de código...:
 

ThisForm.Grid1.RecordSource =ThisForm.Grid1.RecordSource

                                     

No puede aplicar lo del SetFocus, lo cual tambien funciona, ya que mi programación que estaba implementando estaba dentro de un Valid, es por ello que este pedazo de código me funciono bien.

Espero que sirva para que otros también encuentren una opción y den solución a los problemas con que a veces nos encontramos en el camino de la programación.

Saludos a todos,

Bendiciones,


David Gustavo

Mauricio Gonzalez

unread,
Jan 12, 2017, 6:59:32 PM1/12/17
to Comunidad de Visual Foxpro en Español
Arturo, cuando estas insertando en el grid, debe estar posicionado en la tabla secundaria, yo tengo algo asi y no tengo problemas, luego, cuando grabo o cancelo, lo posiciono en la tabla primaria.

Suerte

Elides Paredes

unread,
Jan 12, 2017, 8:44:53 PM1/12/17
to Comunidad de Visual Foxpro en Español
Estimado amigo.
Lo que yo hago y no me da problema al insertar nuevos registros es volver a refrescar el grid pero de otra forma en el procedimiento afterRowColChange (cada vez que cambia un valor en el grid)
hago lo siguiente.
 
This.column2.texto1.Value  = Contenido.Num_Transa
This.column3.texto1.Value  = Contenido.Cod_Transa
This.column4.texto1.Value  = Contenido.Num_Cotiza
This.column5.Texto1.Value  = Contenido.Estatus

Espero te sea útil mi recomendación
Saludos de

Elides Paredes desde 
Barquisimeto Venezuela

Antonio Meza

unread,
Jan 13, 2017, 7:55:39 AM1/13/17
to Comunidad de Visual Foxpro en Español
Arturo va a estar muy agradecido después de 6 años jeje
Reply all
Reply to author
Forward
0 new messages