Codificación: Manipulación de grids en frmEmpleados

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

< Codificación: Manipulación de controles en frmPedidos


Planteamiento inicial

En este punto trataremos uno de los puntos críticos de la modificación de cualquier formulario; la creación de grids. Se aconseja consultar el siguiente enlace para entender el funcionamiento básico del control. Así mismo es requisito imprescindible la consulta de los siguientes documentos.


Formulario de Empleados

En el punto anterior hemos creado una pestaña que contiene un panel. Sobre el mismo crearemos nuestro grid, tal como podemos ver en el siguiente documento, usando el método necesario para la creación de las columnas.


El código de la creación del grid es el siguiente:


' Creación del grid
  Set GrdHcoFirmasEmpleado = gForm.Controls.Add("AhoraOCX.cntGridUsuario", "Pers_GrdHcoComisionesVariables", lPnl)
  With GrdHcoFirmasEmpleado
    .Visible = True
    .Agregar = False
    .Editar = False
    .Eliminar = False
    .CargaObjetos = False
    .EditarPorObjeto = False
    .EditarPorObjetoYVista = False
    
    .AgregaColumna "IdPedido", 1000, "Pedido"
    .AgregaColumna "IdLinea", 1000, "Lin.Ped."
    .AgregaColumna "EstadoFirmaDescrip", 2000, "Firmado"
    .AgregaColumna "Fecha", 1000, "Fecha"
    
    .Campo("IdPedido").Coleccion = "Pedidos"
    .Campo("IdPedido").ColeccionWhere = "Where IdPedido = @IdPedido"
    
    .From = "Pers_vHco_EstadosFirmasLineas"
    .Where = "WHERE IdEmpleado = " & gForm.Controls("EObjeto").ObjGlobal.Propiedades("IdEmpleado")
    
    .OrdenMultiple = "Fecha DESC, IdPedido, IdLinea"
    .ColumnaEscalada = "Fecha"
    .RefrescaSinLoad = True 
    .Refresca = True
    .ActivarScripts = True
  End With

Nótese que en la instrucción de creación uno de los parámetros es lPnl. En el código existente del formulario hace referencia al panel que hemos creado dentro de la nueva pestaña por lo que el grid se ajustará automáticamente en tamaño y forma a éste.


NOTA: Para este ejemplo hemos creado con anterioridad una vista que estamos usando para cargar el histórico. Tal como hemos visto, el resultado, visualmente hablando, sería el mismo si añadiéramos campos nuevos con las propiedades Sustitucion o FormulaSelect, no obstante, teniendo en cuenta que es un histórico y el volumen de datos puede ser extenso en relativamente poco tiempo, penalizaría mucho la carga del mismo.



En el siguiente documento tenemos información relativa a las propiedades del grid. Veamos las más importantes aplicadas al código de creación: 


Editar, Eliminar, Agregar: Determinan las operaciones que podremos o no realizar sobre los datos que se muestran.


EditarPorObjeto / EditarPorObjetoYVista: Estas propiedades determinan si el grid entra en "modo objeto". A nivel técnico la diferencia radica en que, si éstas están activas, las propiedades From y Where no son necesarias puesto que tomará la propiedad Sql de la colección que, obligatoriamente, hemos de cargar con la propiedad Coleccion.

Para entenderlo mejor, en uno de los puntos anteriores hemos modificado los objetos de Pedidos y Lineas Pedido y hemos asignado a su propiedad Edición en grid por Objetos las vistas personalizadas que hemos creado. También hemos comprobado como, añadiendo las columnas correspondientes, los datos se guardaban correctamente en las dos tablas, Pedidos_Cli_Lineas y Conf_Pedidos_Cli_Lineas. Esto es posible porque la carga del grid de las líneas del pedido (por citar un ejemplo) tienen activas estas propiedades, instancian directamente el objeto Lineas Pedido y cada columna es una de las propiedades de dicho objeto, a las cuales hemos añadido los campos configurables.


AgregaColumna: En este artículo, ya referenciado, tenemos toda la información necesaria para la creación de las columnas con el tipo, formato y diseño que necesitemos.


ColumnaEscalada: La columna que definamos en esta propiedad es la que se "extenderá" en caso de que el tamaño de todas las columnas agrupadas no ocupe el máximo del ancho del grid. En nuestro ejemplo "Fecha" es la columna escalada por lo que el resultado es el siguiente:



Por otro lado las columnas que agregamos tienen a su vez otra serie de propiedades. En este documento podemos consultar las principales. 


(Campo).Coleccion / (Campo).ColeccionWhere: Nos sirve para enlazar la colección que cargamos con la condición establecida en ColeccionWhere. En la práctica hará que podamos acceder directamente al objeto del pedido directamente haciendo doble click en el campo.


De esta forma al final tenemos una pequeña modificación aplicada al formulario, al que hemos creado una pestaña y un grid que carga automáticamente los datos del histórico de firmas filtrando por empleado. 


El código completo hasta el momento de este formulario se puede ver en el fichero adjunto frmEmpleados_2.txt. 


Codificación: Manipulación de grids en frmPedidos >

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo