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;

        }
    }
}