(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.
Código:
Private Function Rosetta() As Collection
Dim cTmp As New Collection
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.
Código:
Public Sub GridViewExisting_Data(Row As Integer, Column As Integer)
If resShow.Available Then
resShow.MoveTo(Row)
GridViewExisting[Row, Column].Text = resShow[aFields[Column]]
Endif
End