Grid queda en Blanco dentro de un formulario

344 views
Skip to first unread message

integral

unread,
Nov 2, 2025, 6:02:40 PMNov 2
to Comunidad de Visual Foxpro en Español

Que tal amigos del Foro :

Buenas Tardes

Quizás mi consulta ya se ha presentado anteriormente pero no logro encontrar una solución.

Encontre un link donde dan soluciones a mi problema presentado, pero no resuelven mi problema..

Desde un formulario traigo en 2 cursores la tablas Principal y Detalle

Hago el proceso y calculos y todo perfecto. Al momento de grabar a las tablas en SQL Server 2019. El Grid que contiene los items del detalle se pone en blanco.

Ahora bien si cierro el formulario y vuelvo a ingresar aparecen en el Grid los items ingresados del detalle...

Aqui una muestra resumida del problema presentado...
   
**************************************************************************
*- Carga el GRID con las Cuotas Generadas y evita que el GRID este vacio
**************************************************************************

 Thisform.Grid_Cuotas.RecordSource = " "   

Thisform.Grid_Cuotas.RecordSource = "Cur_Prueba"

ó

****************************************************
* CARGA DEL GRID CON LOS DATOS DEL CURSOR TEMPORAL
****************************************************
 Thisform.Grid_Cuotas.RecordSource = " "   
Thisform.Grid_Cuotas.RecordSourceType = 1                                 
Thisform.Grid_Cuotas.RecordSource = "Cur_Prueba"                          
ThisForm.Grid_Cuotas.Refresh()

Agradezco sus comentarios y sugerencias.

Saludos,

Integral

ERROR_GRID_02.jpg

Zarlu

unread,
Nov 3, 2025, 8:28:18 AMNov 3
to Comunidad de Visual Foxpro en Español
Buenos días Integral!

Muestras como enlazas las tablas/cursores al grid, pero no como generas los datos y que haces al grabar.

Mencionas que es problemas es "...Al momento de grabar a las tablas ..."

Lo que puedo comentar es que, en general, pudiera ser que en algo estás afectando al cursor sin desenlazarlo al momento de grabar

Suerte
zarlu
Chetumal, Quintana Roo, México

integral

unread,
Nov 3, 2025, 10:03:41 PMNov 3
to Comunidad de Visual Foxpro en Español
Que tal Colega Zarlu :

Gracias por tus comentarios.

Elimine una linea del código que estaba demás. Y se resolvió el problema del Grid vacio.

Pero surgió otro problema.

Se rompe la relación establecida 

Aqui el codigo que establece la conexion.

SQLEXEC(cn, 'SELECT * FROM dbo.Detalle ORDER BY Cod_Pres, id_Pres', 'Cur_Genera_Cuotas')
SELECT Cur_Genera_Cuotas
GO TOP

INDEX ON Cod_Pres + Id_Pres TAG cDetalles       

SELECT Cursor_Wiew_Prestamos                                                    
SET RELATION TO Cod_Pres + Id_Pres INTO Cur_Genera_Cuotas                      
*SET SKIP TO Cur_Genera_Cuotas                              

Agradezco tus comentarios y sugerencias..

Atte.,

Integral

Zarlu

unread,
Nov 4, 2025, 10:36:26 AMNov 4
to Comunidad de Visual Foxpro en Español
Buenos días Integral!

No mencionas/muestras cual es el código que ejecutas y rompe la relación.
O es que quizá no hay datos en la tabla secundaria que coincidan con la relación.
Puedes probar haciendo un browse de ambas tablas, ir moviendo el puntero en la primaria y observar como se desplaza en la secundaria.

Suerte
zarlu
Chetumal, Quintana Roo, México


integral

unread,
Nov 11, 2025, 10:58:12 AMNov 11
to Comunidad de Visual Foxpro en Español

Que tal amigos del Foro

Muy Buenos Días

Vengo probando y ensayando diferentes formas de refrescar un Grid con un Cursor, pero no muestra la(s) ultima(s) cuota(s) ingresada(s)...

La relación establecida funciona perfectamente...

El problema al parecer  esta en el GRID...

El Grid con el cursor actualizado no muestra ningún dato y aparece en blanco...

Con los botones de navegación me desplazo a otros registros anteriores y la relación funciona perfectamente.

Cierro el formulario y vuelvo a ingresar y ahí si aparece el Grid cargado con las ultimas cuotas.

Agradezco sus comentarios y sugerencias...

Saludos,

Integral

Zarlu

unread,
Nov 12, 2025, 7:24:40 AMNov 12
to Comunidad de Visual Foxpro en Español
Buenos días integral!

1.- Pon un botón de prueba para hacer un browse y comparar el contenido.
2.- Muestra el código que estas usando para generar el cursor, la relación y refrescar el grid.

Suerte
zarlu
Chetumal, Quintana Roo, México

Hector Colman

unread,
Nov 13, 2025, 4:53:56 AMNov 13
to publice...@googlegroups.com

*PRECIOV N(12,2) PRECIO VENTA MOSTRADOR
*PRECIOM N(12,2) PRECIO VENTA MAYORISTA

Select Compras
*CREATE CURSOR Compras (Codigo c(20),Co_barra C(20),Articulo c(50),Cantidad n(10,3),Precio n(10), Exenta n(10),
*Grabada1 n(10), Grabada2 n(10), porcent n(3,2), f_garantia d(8), lacre c(50), f_gar_venc d(8),descp n(10), iva n(1))

With Thisform.Panel.hoja2.grid1

***-------------------------------Para modificar ...................................
.RecordSource ="CompraS" && Tabla
.ColumnCount = 17 && Cantidad de columna

***------------------no tocar---------------------------------------------------****

.AllowCellSelection = .F. && Para seleccionar todo
.GridLines = 0 && Linea deshabilitada
.DeleteMark = .F. && Personal p/ borrar deshabilitada
.FontName = "Tahoma" && Tipo de letra
.RowHeight = 20 && Tamaño entre registro
.AllowHeaderSizing = .T. && Tamaño de la cabecera
.GridLines = 3 && Cuadricula
.GridLineColor = _COLORgrilla && Color de la cuabricula
.AllowHeaderSizing = .T.
.HeaderHeight = 15
.FontSize = 8

***Detalle de la Columna 1
.Column1.Width = 17
.Column1.header1.Caption = ":::"
.Column1.AddObject("im", "image")
.Column1.CurrentControl =  "im"
.Column1.im.Visible = .T.
.Column1.im.Picture = "iconos\Hacer.bmp"
*.Column1.im.BorderStyle= .T.
.Column1.Sparse = .F.
***-----------------------------------------------------------------------------****

***----------------PARA LAS COLUMNA DE LA GRILLA................................****
.Column2.Width = 25
.Column2.ControlSource ="IT"
.Column2.header1.Caption = "IT"
.Column2.header1.ForeColor = Rgb(0,0,128)
*.Column3.header1.FontBold = .T.
.Column2.header1.Alignment = 2
.Column2.Alignment= 0   && Alineamiento de datos
.Column2.header1.Alignment = 2 && Alineamiento del título
.Column2.InputMask = "999"   &&Mascara de entrada
.Column2.Format = "LR"
.Column2.Alignment = 2


.Column3.Width = 45
.Column3.ControlSource ="Codigo"
.Column3.header1.Caption = "Código"
.Column3.header1.ForeColor = Rgb(0,0,128)
*.Column3.header1.FontBold = .T.
.Column3.header1.Alignment = 2
.Column3.Alignment= 1   && Alineamiento de datos
.Column3.header1.Alignment = 2 && Alineamiento del título
.Column3.InputMask = "99999"   &&Mascara de entrada
.Column3.Format = "LR"
.Column3.Alignment = 2


.Column4.Width = 300
.Column4.ControlSource ="Articulo"
.Column4.header1.Caption = "Descripción del artículo*"
.Column4.header1.ForeColor = Rgb(0,0,128)
*.Column4.header1.FontBold = .T.
.Column4.header1.Alignment = 2
.Column4.Alignment = 0 && Alineamiento de datos

.Column5.Width = 50
.Column5.ControlSource ="porcent"
.Column5.header1.Caption = "Desc %"
.Column5.header1.ForeColor = Rgb(0,0,128)
*.Column4.header1.FontBold = .T.
.Column5.header1.Alignment = 2
.Column5.Alignment = 1   && Alineamiento de datos
.Column5.InputMask = "999.99"   &&Mascara de entrada

.Column6.Width = 60
.Column6.ControlSource ="Cantidad"
.Column6.header1.Caption = "Cantidad*"
.Column6.header1.ForeColor = Rgb(0,0,128)
*.Column5.header1.FontBold = .T.
.Column6.header1.Alignment = 2
.Column6.Alignment = 1   && Alineamiento de datos
.Column6.InputMask = "999,999,999.99"   &&Mascara de entrada


.Column7.Width = 70
.Column7.ControlSource ="precio"
.Column7.header1.Caption = "P. Compra"
.Column7.header1.ForeColor = Rgb(0,0,128)
*.Column6.header1.FontBold = .T.
.Column7.header1.Alignment = 2
.Column7.Alignment = 1   && Alineamiento de datos
.Column7.InputMask = "999,999,999"   &&Mascara de entrada

*pdolar n(10,2)
.Column8.Width = 70
.Column8.ControlSource ="pdolar"
.Column8.header1.Caption = "P. Dolares"
.Column8.header1.ForeColor = Rgb(0,0,128)
*.Column8.header1.FontBold = .T.
.Column8.header1.Alignment = 2
.Column8.Alignment = 1   && Alineamiento de datos
.Column8.InputMask = "999,999,999.99"   &&Mascara de entrada

*preciov n(10,2)
.Column9.Width = 70
.Column9.ControlSource ="PRECIOV"
.Column9.header1.Caption = "P. Venta"
.Column9.header1.ForeColor = Rgb(0,0,128)
*.Column9.header1.FontBold = .T.
.Column9.header1.Alignment = 2
.Column9.Alignment = 1   && Alineamiento de datos
.Column9.InputMask = "999,999,999"   &&Mascara de entrada

*preciov n(10,2)
.Column10.Width = 70
.Column10.ControlSource ="PRECIOM"
.Column10.header1.Caption = "P. Mayorista"
.Column10.header1.ForeColor = Rgb(0,0,128)
*.Column10.header1.FontBold = .T.
.Column10.header1.Alignment = 2
.Column10.Alignment = 1   && Alineamiento de datos
.Column10.InputMask = "999,999,999"   &&Mascara de entrada

.Column11.Width = 70
.Column11.ControlSource ="Exenta"
.Column11.header1.Caption = "Exenta"
.Column11.header1.ForeColor = Rgb(0,0,128)
*.Column11.header1.FontBold = .T.
.Column11.header1.Alignment = 2
.Column11.Alignment = 1   && Alineamiento de datos
.Column11.InputMask = "99,999,999,999"   &&Mascara de entrada

a = "Gravada 5%"
.Column12.Width = 70
.Column12.ControlSource ="Grabada1"
*.Column2.header1.WordWrap = .T.
.Column12.header1.Caption = a
.Column12.header1.ForeColor = Rgb(0,0,128)
*.Column2.header1.FontBold = .T.
.Column12.header1.Alignment = 2
.Column12.Alignment = 1   && Alineamiento de datos
.Column12.InputMask = "99,999,999,999"   &&Mascara de entrada

a = "Gravada 10%"
.Column13.Width = 80
.Column13.ControlSource ="Grabada2"
*.Column3.header1.WordWrap = .T.
.Column13.header1.Caption = a
.Column13.header1.ForeColor = Rgb(0,0,128)
*.Column3.header1.FontBold = .T.
.Column13.header1.Alignment = 2
.Column13.Alignment = 1   && Alineamiento de datos
.Column13.InputMask = "99,999,999,999"   &&Mascara de entrada

* f_garantia d(8), lacre c(50), f_gar_venc d(8
.Column14.Width = 70
.Column14.ControlSource ="f_garantia"
.Column14.header1.Caption = "F. Garantia"
.Column14.header1.ForeColor = Rgb(0,0,128)
*.Column14.header1.FontBold = .T.
.Column14.header1.Alignment = 2
.Column14.Alignment = 0

.Column15.Width = 70
.Column15.ControlSource ="f_gar_venc"
.Column15.header1.Caption = "F.G. Venc."
.Column15.header1.ForeColor = Rgb(0,0,128)
*.Column15.header1.FontBold = .T.
.Column15.header1.Alignment = 2
.Column15.Alignment = 0

.Column16.Width = 600
.Column16.ControlSource ="lacre"
.Column16.header1.Caption = "Lacre"
.Column16.header1.ForeColor = Rgb(0,0,128)
*.Column16.header1.FontBold = .T.
.Column16.header1.Alignment = 2
.Column16.Alignment = 0

.Column17.Width = 40
.Column17.header1.Caption = "Imprimir"
.Column17.ControlSource ="IVA"
.Column17.AddObject("ex", "checkbox")
.Column17.CurrentControl =  "ex"
.Column17.ex.Visible = .F.
.Column17.ex.Caption = "sí"
.Column17.ex.BackStyle = 0
.Column17.Sparse = .F.
.Column17.header1.ForeColor = Rgb(0,0,128) && Color de la letra del título



.Refresh
.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO( ),2)=0, RGB(255,255,255),v_color )", "Column")
***-----------------------------------------------------------------------------****
Wait Clear
.autofit
Endwith

Libre de virus.www.avast.com

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/66f15230-c80c-48ea-a00d-d584461045d6n%40googlegroups.com.

Hector Colman

unread,
Nov 13, 2025, 4:56:01 AMNov 13
to publice...@googlegroups.com
image.png

Libre de virus.www.avast.com

Daniel Manuel López

unread,
Nov 13, 2025, 11:33:14 AMNov 13
to Comunidad de Visual Foxpro en Español
Saludos a todos, espero entiendan mi solución a este problema
adjunto archivo WORD
Grids manuales.docx

fernando whu paredes

unread,
Nov 13, 2025, 4:47:51 PMNov 13
to publice...@googlegroups.com
antes de refrescar la grilla debe asigar recordsource=· ·
configura grilla
posteeriormenten asigna la tabla cursor condata 
siguiente linea un grid.setfocus  


Atentamente
Fernando Whu
Informatico
Skype: Fernando.whu
Celular: +56 9 6683 4305  


integral

unread,
Nov 14, 2025, 3:09:33 PMNov 14
to Comunidad de Visual Foxpro en Español
Que tal amigos del Foro :

Muy Buenas Tardes

Después de investigar y probar soluciones al problema presentado con el Grid. Pude al fin encontrar la solución.

Desde que comencé a programar en VFP no era partidario de utilizar el famoso GRID porque escuche decir que tenia un BUG y no reflejaba los resultados actualizados...

Después de esta experiencia puedo decir que no es tanto así, mas bien es conocer a fondo todas las propiedades de dicho control.

RESULTADO_FINAL.jpg

Solo queda hacer un desplazamiento de los registros y se muestren todas las cuotas menores a 5 items.

Aquí la solución en una imagen..

ACTUALIZAR_GRID_DESPUES_DEL_INSERT.jpg

Dejo un par de link relaciones al tema con el Grid.



Gracias a los colega por sus comentarios y sugerencias...

Hasta la proxima

Saludos,

Integral

integral

unread,
Nov 20, 2025, 10:19:29 AM (12 days ago) Nov 20
to Comunidad de Visual Foxpro en Español
Que tal amigos del Foro :

Muy Buenos Dias

Un colega me escribe para preguntarme, cual fue la solucion que aplique para el desplazamiento de los registros en el grid

Aqui la solucion.

WITH Thisform.Grid_Cuotas
     .DoScroll(2)
ENDWITH

PD: Buscando ayer cierta información encontré un articulo que publico un colega hace unos años y creo vale la pena publicarlo para 
tenerlo en cuenta los comentarios mencionados...

Hasta la próxima

Saludos,

Integral

Encontre esto en MSDN_TIPS_VFP.docx
Reply all
Reply to author
Forward
0 new messages