Formulario de Mantenimiento Multigrid (con grids vinculados en pestañas)

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

En un mismo formulario de mantenimiento, generamos dos grids, uno en cada pestaña. Uno de los grids se filtra automáticamente con el contenido del primero.

Útil cuando necesitamos mantener datos en 2 tablas vinculadas.
La propiedad del campo "TAG" es la que establece el vínculo entre los diferentes grids. El campo clave debe llamarse igual en ambos grids.


Código VB6:

Sub main()
Dim lfrm
Set lfrm = ceesi_apoyo.getformbyname("FRMMANTENIMIENTOS")
lfrm.form.panCaption.AccionarSeguridad

With lFrm.Grid("Datos Scripts")

      If Not .Preparada Then 
          .Agregar =True
          .Editar = True
          .Eliminar = True
          .CargaObjetos = False
          .EditarPorObjeto = False

          .AgregaColumna "IdCliente", 1500, "IdCliente", , "SELECT IdCliente, Cliente FROM Clientes_Datos ", True
          .AgregaColumna "@Cliente", 3000, "Cliente"
          .Campo("@Cliente").Sustitucion = "SELECT TOP 1 cliente FROM clientes_datos WHERE IdCliente=@IdCliente"
          .Campo("@Cliente").Column.AllowFocus = False
          .AgregaColumna "IdEmpleado", 500, "IdEmpleado", , "SELECT IdEmpleado,IdEmpleado,Nombre + ','+ Apellidos as Empleado FROM Empleados_Datos ", True
          .AgregaColumna "@Nombre", 2000, "Nombre"
          .Campo("@Nombre").Sustitucion = "SELECT TOP 1 Nombre + ','+ Apellidos as Empleado FROM Empleados_Datos WHERE IdEmpleado=@IdEmpleado"
          .Campo("@Nombre").Column.AllowFocus = False
          .AgregaColumna "Analisis", 2000, "Analisis"
          .AgregaColumna "Descrip", 5000, "Descrip"
          .AgregaColumna "FechaModif", 1000, "Fecha Modif",,,,"dd/mm/yyyy"
          .AgregaColumna "IdEjemplo", 200, "IdEjemplo", True
          .Campo("IdEjemplo").Tag = "IdEjemplo"
          .Campo("IdEjemplo").Column.AllowFocus = False

         .From = "Ceesi_Clientes_programacion"
         .Orden = "IdDoc"
         .Refresca = True
     End If

End With

With lFrm.Grid("Scripts")
       If Not .Preparada Then
             .Agregar = True
             .Editar = True
             .Eliminar = True
             .CargaObjetos = False
             .EditarPorObjeto = False

             .AgregaColumna "IdEjemplo", 0, "IdEjemplo"
             .AgregaColumna "Objeto", 1500, "Objeto", , "SELECT Objeto, DEscrip FROM Objetos ", True
             .AgregaColumna "Formulario", 4000, "Formulario"
             .AgregaColumna "Script", 750, "Script"
             .Campo("IdEjemplo").Tag = "IdEjemplo"

       .From = "CEESI_clientes_Programacion_scripts"

              .Orden = "IdDOc"
              .Refresca = True
End If
End With
           lFrm.EnlaceGrid("Scripts") = "Datos Scripts"
           lFrm.MuestraFiltro("Datos Scripts") = True
          'lFrm.MuestraFiltro("Scripts") = True
           lfrm.form.Width=15000
           lfrm.form.Height=10000
           lfrm.form.left=200
           lfrm.form.top=100
           lFrm.Carga

Set lFrm = Nothing
frmAux.Descargar
End Sub

Código C#:

using AhoraAsistentes;
using AhoraSistema;
using AhoraOCX;
using AhoraCore;
using System.Windows.Forms;


namespace AhoraScriptsVacia
{
    public class Script_0 : AhoraOCX.AhoraBaseScript
    {
        public void Main()
        {
            IFrmMantenimientos lFrm =  (IFrmMantenimientos)gCn.AhoraProceso("NewFrmMantenimiento", out _, gCn);
            (lFrm.Form.Controls["panCaption"] as IEnlaceObjetos).AccionarSeguridad();

            ICntGridUsuario lGrid = lFrm["Datos Scripts"];
            if (!lGrid.Preparada) 
            {
                lGrid.Agregar = true;
                lGrid.Editar = true;
                lGrid.Eliminar = true;
                lGrid.CargaObjetos = false;
                lGrid.EditarPorObjeto = false;

                lGrid.AgregaColumna("IdCliente", 100, "IdCliente", false, "SELECT IdCliente, Cliente FROM Clientes_Datos ", true);
                lGrid.AgregaColumna("@Cliente", 200, "Cliente");
                lGrid.Campo("@Cliente").Sustitucion = "SELECT TOP 1 cliente FROM clientes_datos WHERE IdCliente=@IdCliente";
                lGrid.Campo("@Cliente").Column.AllowFocus = false;
                lGrid.AgregaColumna("IdEmpleado", 33, "IdEmpleado", false, "SELECT IdEmpleado,IdEmpleado,Nombre + ','+ Apellidos as Empleado FROM Empleados_Datos ", true);
                lGrid.AgregaColumna("@Nombre", 133, "Nombre");
                lGrid.Campo("@Nombre").Sustitucion = "SELECT TOP 1 Nombre + ','+ Apellidos as Empleado FROM Empleados_Datos WHERE IdEmpleado=@IdEmpleado";
                lGrid.Campo("@Nombre").Column.AllowFocus = false;
                lGrid.AgregaColumna("Analisis", 133, "Analisis");
                lGrid.AgregaColumna("Descrip", 333, "Descrip");
                lGrid.AgregaColumna("FechaModif", 66, "Fecha Modif", false, "", false, "dd/mm/yyyy");
                lGrid.AgregaColumna("IdEjemplo", 13, "IdEjemplo", true);
                lGrid.Campo("IdEjemplo").Tag = "IdEjemplo";
                lGrid.Campo("IdEjemplo").Column.AllowFocus = false;
                lGrid.From = "Ceesi_Clientes_programacion";
                lGrid.Orden = "IdDoc";
                lGrid.Refresca = true;

            }

            ICntGridUsuario lGrid2 = lFrm["Scripts"];
            if (!lGrid2.Preparada)
            {
                lGrid2.Agregar = true;
                lGrid2.Editar = true;
                lGrid2.Eliminar = true;
                lGrid2.CargaObjetos = false;
                lGrid2.EditarPorObjeto = false;

                lGrid2.AgregaColumna("IdEjemplo", 0, "IdEjemplo");
                lGrid2.AgregaColumna("Objeto", 100, "Objeto", false, "SELECT Objeto, DEscrip FROM Objetos ", true);
                lGrid2.AgregaColumna("Formulario", 267, "Formulario");
                lGrid2.AgregaColumna("Script", 50, "Script");
                lGrid2.Campo("IdEjemplo").Tag = "IdEjemplo";

                lGrid2.From = "CEESI_clientes_Programacion_scripts";

                lGrid2.Orden = "IdDoc";
                lGrid2.Refresca = true;
            }

            lFrm.SetEnlaceGrid("Scripts", "Datos Scripts");
            lFrm.SetMuestraFiltro("Datos Scripts", true);
            lFrm.Form.Width = 1000;
            lFrm.Form.Height = 667;
            lFrm.Form.Left = 200;
            lFrm.Form.Top = 100;
            lFrm.Carga(gCn.Sesion.MainForm, true);

            lFrm = null;

        }
    }
}


¿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