Codificación: Manipulación de grids en frmPedidos

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

< Codificación: Manipulación de grids en frmEmpleados


Planteamiento inicial

Modificaremos el formulario de Pedidos para añadir un grid con el histórico de firmas, de forma similar al visto en el punto anterior, y realizaremos una modificación en el grid estándar de las líneas para añadir un botón contextual que será con el que se validarán las líneas individuales.


Formulario de Pedidos


Grid de histórico de firmas 

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.


Siguiendo los mismos pasos que en el punto anterior en el formulario de empleados creamos un grid para el histórico en el que mostraremos más datos. Éste es el código resultante:

Set GrdHcoFirmas = gForm.Controls.Add("AhoraOCX.cntGridUsuario", "Pers_GrdHcoFirmas", lPnl)
  With GrdHcoFirmas    
    .Visible = True
    .AplicaEstilo
    .Agregar = False
    .Editar = False
    .Eliminar = False
    .CargaObjetos = False
    .EditarPorObjeto = False
    .EditarPorObjetoYVista = False
    
    .AgregaColumna "Nombre", 3000, "Validado por"
    .AgregaColumna "IdLinea", 1000, "Lin.Ped."
    .AgregaColumna "EstadoFirmaDescrip", 1000, "Acción"
    .AgregaColumna "EstadoFirmaAnteriorDescrip", 1000, "Estado ant."
    .AgregaColumna "Fecha", 1000, "Fecha"
    .AgregaColumna "IdEmpleado", 0, "Empleado (Oculto)"

    
    .Campo("Nombre").Coleccion = "Empleados"
    .Campo("Nombre").ColeccionWhere = "Where IdEmpleado = @IdEmpleado"
    
    .From = "Pers_vHco_EstadosFirmasLineas"
    .Where = "WHERE IdPedido  = " & gForm.Controls("EObjeto").ObjGlobal.Propiedades("IdPedido")
    
    .OrdenMultiple = "Fecha DESC, IdPedido, IdLinea"
    .ColumnaEscalada = "Nombre"
    .RefrescaSinLoad = True 
    .Refresca = True
    .ActivarScripts = True
  End With

Tal como podemos observar no hay excesivas diferencias con el grid de empleados, nótese que hemos asignado a la columna Nombre la colección de empleados y determinado su ColeccionWhere por un campo que actualmente no se mostrará pero al que podemos acceder, IdEmpleado.


No obstante nos encontramos con un pequeño error en la carga del mismo; aunque cambiemos de registro siempre mantiene el valor cargado inicialmente.


Lo arreglaremos añadiendo la modificación del Where que corresponda al número del pedido y recargando manualmente el grid en el evento, visto con anterioridad, CargaObjeto. A continuación detallamos el código que debemos insertar en dicho evento:

Set lGrdHcoFirmas = gForm.Controls("Pers_GrdHcoFirmas")
  lGrdHcoFirmas.Where = "WHERE IdPedido  = " & gForm.Controls("EObjeto").ObjGlobal.Propiedades("IdPedido")
  lGrdHcoFirmas.Refrescar


Botón contextual para firmar en grid estándar

En esta ocasión vamos a crear un botón para el grid existente estándar grdLineas para que sea posible firmar las líneas individualmente.


Seguimos los pasos indicados en este documento y obtenemos el siguiente código:


  gForm.controls("grdLineas").MenuItemAdd "Firmar línea", "Pers_mnuFirmar"
  gForm.controls("grdLineas").ActivarScripts = True

IMPORTANTE: En esta ocasión, por motivo de que parte de los menús contextuales del grid se cargan en el propio formulario, no podemos ponerlo en el evento Initialize. Lo pondremos en el Show para garantizar su correcta generación.


Volveremos de nuevo a este formulario para la ejecución de los botones que hemos programado y posteriormente su gestión de seguridad.


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


Creación de nueva pantalla para mantenimiento de grupos de firmas >


¿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