Mensajes: 6
Temas: 2
Gracias Recibidas: 4 en 2 posts
Gracias Dadas: 4
Registro en: Nov 2021
Hola a tod@s,
Tal vez muchos ya sepan sobre este pedacito de código a continuación. A mi me tomó bastante tiempo aprender a utilizarlo bien y aquí lo posteo para cualquiera que vaya comenzando su camino y quiera aprender un poco más a usar este control tan útil.
El código sirve para popular un GridView (llamado "gridIzq") con los resultados de un query desde una base de datos. El Gridview muestra los encabezados con los nombres de cada campo del recordset.
GAMBAS
gridIzq.Rows.count = 0
gridIzq.Columns.count = rsRecords.Fields.Count
For iInc
= 0 To rsRecords.
Fields.
Count - 1 iJnc = 1
Do While Mid(rsRecords.
Fields[iInc
].
Name, iJnc,
1) <> "." 'En MySQL el formato es nombreTabla.nombreCampo, así recuperamos el nombre de campo solamente para el Título de la columna iJnc += 1
gridIzq.
Columns[iInc
].
Text = Right(rsRecords.
Fields[iInc
].
Name,
Len(rsRecords.
Fields[iInc
].
Name) - iJnc
) gridIzq.
Columns[iInc
].
Width = 10 * Len(Right(rsRecords.
Fields[iInc
].
Name,
Len(rsRecords.
Fields[iInc
].
Name) - iJnc
))
gridIzq.Rows.Count = rsRecords.Count
y no olvidarse de agregar el siguiente código al evento _Data del GridView:
GAMBAS
rsRecords.moveTo(Row)
Try gridIzq.
Data.
Text = Str(rsRecords
[Column
])
Espero esto ayude a alguien.
Saluditos,
Yo.
Mensajes: 590
Temas: 58
Gracias Recibidas: 187 en 123 posts
Gracias Dadas: 193
Registro en: Jul 2020
Si estás interesado en el tema de los GridView, tal vez te interese echar un ojo a esta serie de vídeos:
Serie Extendiendo Gridview
Saludos
No podemos regresar
Mensajes: 473
Temas: 112
Gracias Recibidas: 19 en 18 posts
Gracias Dadas: 104
Registro en: Jul 2020
02-04-2022, 11:42
(Última modificación: 02-04-2022, 18:40 por
gambafeliz.)
Gracias @crevilla pero solo un consejo si usas "En MySQL el formato es nombreTabla.nombreCampo, así recuperamos..." este formato para nombrar internamente cada campo de la base de datos se te va hacer interminable hacer expresiones SQL, existen formatos estandarizados mucho mejor.
Tengo algunas preguntas pero tengo algo de prisa y te las haré en cuanto pueda.
Saludos.
Mensajes: 331
Temas: 8
Gracias Recibidas: 62 en 50 posts
Gracias Dadas: 55
Registro en: May 2020
@crevilla y a todo el que pueda interesarle.
Te recomiendo la lectura del siguiente post para insertar código gambas correctamente con la sintaxis resaltada:
https://gambas-es.org/showthread.php?tid=20
En la medida de lo posible os ruego que intentéis usarlo para mejor legibilidad del código.
Gracias y saludos
Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
Mensajes: 1,007
Temas: 155
Gracias Recibidas: 156 en 130 posts
Gracias Dadas: 122
Registro en: Jul 2020
(01-04-2022, 07:09)crevilla escribió: ...aquí lo posteo para cualquiera...
Gracias por compartir el código.
Yo suelo usar algo parecido a lo que planteas pero le agrego una colección en la que están los nombres de los campos y los de las tablas lo que me permite luego poner los nombres de los campos en varios idiomas usando las herramientas de traducción de gambas. No es necesario pero hace que el programa tenga un mejor aspecto y permite la adaptación por parte del usuario.
Si en la base existe un campo donde se pone el nombre de un producto pero el campo se llama "prod" en el gridview puede aparecer "Producto" como titulo del campo.
Ejemplo de la lista de nombres, que se permite luego traducir los nombres de los campos y las tablas sin tener que tocar nada de la base de datos.
GAMBAS
cTmp.Add(("Shareholders"), "shareholders")
cTmp.Add("Id", "shareholders.idx")
cTmp.Add(("Name"), "shareholders.name")
cTmp.Add(("Phone"), "shareholders.phone")
cTmp.Add(("Email"), "shareholders.email")
cTmp.Add(("Employees"), "employees")
cTmp.Add("Id", "employees.idx")
cTmp.Add(("Name"), "employees.name")
cTmp.Add(("Phone"), "employees.phone")
'...
El evento data uso la lista aFields que tiene os nombres de los campos en el mismo orden que en el result.
GAMBAS
resShow.MoveTo(Row)
GridViewExisting[Row, Column].Text = resShow[aFields[Column]]
1 Saludo.