Obj - Todo lo que debes saber sobre el control obj

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


El objeto OBJ es un objeto encargado de administrar todos los objetos del sistema. Contiene una colección con todos los objetos definidos (colección de objetos de tipo Objeto). Con él, podremos también definir objetos simplemente indicándole un nombre único y la tabla a la que hace referencia (objeto virtual).


OBJ es un objeto de tipo Objetos.


Se accede a él mediante el objeto Conexión: gCn.Obj



DameColeccion


Descripción: Obtiene una colección de objetos que cumplan una condición. Si no encuentra ninguno, devuelve Nothing

Parámetros de entrada: Nombre de la colección de objetos (String), condición (Puede ser un Select, o una cláusula where, que, a su vez, puede contener una subselect) (String), indicar si se aplican los filtros (Booleano, opcional), indicar si se carga la colección (Booleano, opcional), indicar si se muestra el mensaje de que la colección tiene más elementos de los que puede presentar el árbol (Booleano, opcional).

Parámetros de salida: Objeto Colecciones.


Código VB6:

Set lCol = gcn.Obj.DameColeccion("OrdenesCarga","WHERE IdOrden in select IdOrden from Ordenes_Carga where IdEstado = 0)",,False)
Set lSeg= gcn.obj.DameColeccion("Seguimientos", "WHERE idproyecto = '" & gForm.Controls("IdProyecto").text & "'" )
Sub  ejDameColeccion  
   Set lCol = gcn.Obj.DameColeccion("Imagenes","WHERE Objeto = 'Articulo' And IdDocObjeto=" & gForm.Eobjeto.ObjGlobal.Propiedades("IdDoc")  ,True,True)   
   If lCol Is Nothing Then      
     MsgBox "No se han encontrado imágenes"    
   Else     
     lCol.Show    
   End If  
 End Sub


Código C#:

IItemColeccion lCol = gCn.Obj.DameColeccion("OrdenesCarga", "WHERE IdOrden IN (SELECT IdOrden FROM Ordenes_Carga WHERE IdEstado= 0)");
IItemColeccion lSeg = gCn.Obj.DameColeccion("Seguimientos", "WHERE IdProyecto = '" + (gForm.Controls["IdProyecto"] as IComboUsuario).Text + "'");
private void EjDameColeccion()
{
    IItemColeccion lCol = gCn.Obj.DameColeccion("Imagenes", "WHERE Objeto = 'Articulo' AND IdDocObjeto = " + (gForm.Controls["EObjeto"] as IEnlaceObjetos).ObjGlobal["IdDoc"], true, true);
    if (lCol == null) 
    {
        AhoraCore.VBA.Interaction.MsgBox("No se han encontrado imágenes.");
    }
    else
    {
        lCol.Show();
    }
}


DameObjeto


Descripción: Obtiene un objeto en concreto

Parámetros de entrada: Nombre de la colección de objetos (String), condición (la cláusula WHERE puede contener una subselect) (String), indicar si se aplican los filtros (Booleano, opcional), indicar si se presenta la colección si se encuentra más de un objeto que cumpla la condición (Boleano, opcional)

Parámetros de salida: Objeto. Busca en la colección los que cumplan la condición. Si no encuentra ninguno devuelve Nothing


Código VB6#:

Set lobj=gcn.Obj.DameObjeto ("Facturas","WHERE IdFactura = " & lText)
gcn.Obj.DameObjeto ("Facturas","WHERE IdFactura = " & lText).show
Sub ejDameObjeto  
    sql= "Select * from VDocumentos where tabla like 'Articulo'  and iddocobjeto = "& gForm.Eobjeto.ObjGlobal.Propiedades("IdDoc")  
    Set lrs = gCn.OpenResultSet (sql,2,3)  
    If lrs.EOF  Then    
        MsgBox "No hay documentos vinculados al artículo",vbinformation   
        Exit Sub  
    Else   
        MsgBox "A continuación, se mostrarán los documentos vinculados al artículo",vbinformation  
    End If  
    Do While Not lrs.EOF   
        Set ldoc = gcn.Obj.Dameobjeto("Docs","WHERE id= '"& lrs("id") &"'",,False )               
        ldoc.objeto.edita      
        lrs.movenext  
    Loop  
    lrs.Cerrar  
End Sub


Código C#:

IItemColeccion lObj = gCn.Obj.DameObjeto("Facturas", "WHERE IdFactura = " + lText);
gCn.Obj.DameObjeto("Facturas", "WHERE IdFactura = " + lText).Show();
private void EjDameObjeto()
{
    string sql = "SELECT * FROM VDocumentos WHERE Tabla like 'Articulo' and IdDocObjeto = " & (gForm.Controls["EObjeto"] as IEnlaceObjetos).ObjGlobal["IdDoc"];
    IRecordSet lRs = gCn.OpenResultSet(sql);
    if (lRs.EOF)
    {
        AhoraCore.VBA.Interaction.MsgBox("No hay documentos vinculados al artículo.", VbMsgBoxStyle.vbInformation);
        return;
    }
    else
    {
        AhoraCore.VBA.Interaction.MsgBox("A continuación se mostrarán los documentos vinculados al artículo.", VbMsgBoxStyle.vbInformation);
    }
    while (!lRs.EOF)
    {
        IItemColeccion lDoc = gCn.Obj.DameObjeto("Docs", "WHERE Id = '" + lRs["Id"].Value + "'", false, false);
        if (lDoc != null)
        {
            lDoc.Show();
        }
        lRs.MoveNext();
    }
    lRs.Cerrar();
}


DameObjStr


Descripción: Obtiene una nueva instancia de un objeto o Iitem

Parámetros de entrada: La clase del objeto (String)

Parámetros de salida: Objeto


Código VB6:

Set larticulo = gcn.Obj.DameObjStr("Articulo")
Sub Initialize()   
  gForm.Botonera.ActivarScripts = True    
  gform.Botonera.BotonAdd "PNuevo", "PNuevo", , 0, True, 123   
  gForm.Botonera.HabilitaBotones 
End Sub  

Sub Botonera_AfterExecute(aBotonera, aBoton)   
   If aBoton.Name = "PNuevo" Then    
     Set lArticulo = gcn.Obj.DameObjStr("Articulo")    
      If Not lArticulo Is Nothing Then      
       lArticulo.Propiedades("IdArticulo") =  "VAR003"      
       lArticulo.Propiedades("IdFamilia") =  "VAR"      
       lArticulo.Propiedades("Descrip") = "Artículo creado por botón nuevo"      
    If Not lArticulo.Update  Then       
       MsgBox "Error añadiendo Artículo"        
       Exit Sub      
    Else     
       lArticulo.show       
    End If      
     MsgBox "Artículo creado correctamente.", vbinformation    
    End If   
    End If     
End Sub

Código C#:

IArticulo lArticulo = (IArticulo)gCn.Obj.DameObjStr("Articulo");
public void Initialize()
{
    (gForm.Controls["Botonera"] as ICntBotonera).ActivarScripts = true;
    (gForm.Controls["Botonera"] as ICntBotonera).BotonAdd("PNuevo", "PNuevo", "", ETipo_Menu.eTipo_Menu_Boton, true, 123);
    (gForm.Controls["Botonera"] as ICntBotonera).HabilitaBotones();
}

public void Botonera_AfterExecute(ICntBotonera aBotonera, IAhoraTool aBoton)
{
    if (aBoton.Name == "PNuevo")
    {
        IArticulo lArticulo = (IArticulo)gCn.Obj.DameObjStr("Articulo");
        if (lArticulo != null)
        {
            lArticulo["IdArticulo"] = "VAR003";
            lArticulo["IdFamilia"] = "VAR";
            lArticulo["Descrip"] = "Artículo creado por botón nuevo";
            if (!lArticulo.Update())
            {
                AhoraCore.VBA.Interaction.MsgBox("Error añadiendo artículo");
                return;
            }
            else
            {
                lArticulo.Show();
            }
            AhoraCore.VBA.Interaction.MsgBox("Artículo creado correctamente", VbMsgBoxStyle.vbInformation);
        }
    }
}


Add


Descripción: añade un nuevo objeto a la colección y comprueba si el objeto es de reciente creación y lo añade a la base de datos

Parámetros de entrada: Objeto a añadir

Parámetros de salida: Objeto


Código VB6:

Set lSolicitud = gcn.Obj.Add("Solicitud")
Set lObj = gCn.Obj.DameObjStr("Solicitud")
If Not lObj Is Nothing Then
  Set lSolicitud  = lObj.Add
  'sentencias que se deban hacer tras añadir el nuevo objeto
End If 
Sub ejAddObjeto  
  Set lObj = Gcn.Obj.DameObjStr("Articulo")     
  If Not lObj Is Nothing Then       
    Set lArticulo = lObj.Add       'otras sentencias que se deseen hacer tras añadir el nuevo objeto             
    lArticulo.Show      
  Else       
    MsgBox "No se ha podido añadir un nuevo artículo"     
  End If 
End Sub

Código C#:

ISolicitud lSolicitud = (ISolicitud)gCn.Obj["Solicitud"].Add();
ISolicitud lObj  = (ISolicitud)gCn.Obj.DameObjStr("Solicitud");
if (!(lObj == null))
{
    ISolicitud lSolicitud = (ISolicitud)lObj.Add();
    lSolicitud.Show();
}
private void EjAddObjeto()
{
    IItemColeccion lObj = gCn.Obj.DameObjStr("Articulo");
    if (lObj != null)
    {
        IArticulo lArticulo = (IArticulo)lObj.Add();
        lArticulo.Show();
    }
    else
    {
        AhoraCore.VBA.Interaction.MsgBox("No se ha podido añadir un nuevo artículo.");
    }
}


FormShow


Descripción: Muestra el formulario indicado

Parámetros de entrada: Nombre del formulario a mostrar (Object), nombre del formulario padre  (Object, opcional, por defecto Nothing), si se fuerza modal  (Boolean, opcional, por defecto False), si se fuerza sin padre  (Boolean, opcional, por defecto False), nombre del formulario principal (Objeto, opcional, por defecto Nothing)

Parámetros de salida: Devuelve True si se muestra correctamente, False en caso de no poder mostrar el formulario.


Código VB6:

gcn.Obj.FormShow frmPersonalizado


Código C#:

gCn.Obj.FormShow(formularioAMostrar);


HourglassAll


Descripción: Muestra u oculta el reloj de arena en pantalla mientras se está ejecutando el script correspondiente.

Parámetros de entrada: Si está activo.


Código VB6:

gcn.obj.HourglassAll True
'Aquí el código que se tenga que ejecutar
gcn.obj.HourglassAll False

Código C#:

gCn.Obj.HourglassAll(true);
// Código a ejecutar
gCn.Obj.HourglassAll(false);


ShowMsgBox


Descripción:Muestra un mensaje en una ventana de diálogo y espera a que el usuario pulse un botón. Se usará este método para sustituir al método nativo de VB Script, ya que este último no sabe quién es el formulario padre y se puede quedar detrás del formulario que lo invocó.

Parámetros de entrada:Mensaje a mostrar, Botones e iconos a mostrar, Título de la ventana de diálogo.

Los argumentos para los botones e iconos son los siguientes:



ConstanteValorDescripción
vbOKOnly0Muestra únicamente el botón OK.
vbOKCancel1Muestra los botones Ok y Cancel.
vbAbortRetryIgnore2Muestra los botones Anular, Reintentar e Ignorar.
vbYesNoCancel3Muestra los botones Sí, No y Cancelar.
vbYesNo4Muestra los botones Sí y No.
vbRetryCancel5Muestra los botones Reintentar y Cancelar.
vbCritical16Muestra el icono de error crítico.
vbQuestion32Muestra el icono de pregunta.
vbExclamation48Muestra el icono de exclamación.
vbInformation64Muestra el icono de información.
vbDefaultButton10El primer botón tiene el foco.
vbDefaultButton2256El segundo botón tiene el foco.
vbDefaultButton3512El tercer botón tiene el foco.
vbDefaultButton4768El cuarto botón tiene el foco.


Parámetros de salida: Devuelve el valor indicando qué botón ha sido pulsado. Si se pulsa la tecla de Escape, devuelve el mismo valor que si se pulsa Cancelar


ConstanteValorBotón
vbOK1OK
vbCancel2Cancelar
vbAbort3Anular
vbRetry4Reintentar
vbIgnore5Ignorar
vbYes6
vbNo7No


Código VB6:

resultado = gcn.obj.showMsgBox("El proceso ha fallado", vbAbortRetryIgnore+vbExclamation+vbDefaultButton2, "Atención: fallo de proceso") 
Dim message 
Select Case resultado 
  Case vbAbort   
    message = "Se ha pulsado Cancelar"   
    'Aquí el código que se tenga que ejecutar 
  Case vbRetry   
    message = "Se ha pulsado Reintentar"   
    'Aquí el código que se tenga que ejecutar 
  Case vbIgnore   
    message = "Se ha pulsado Ignorar"   
    'Aquí el código 
End Select


Código C#:

VbMsgBoxResult resultado = gCn.Obj.ShowMsgBox("El proceso ha fallado", VbMsgBoxStyle.vbAbortRetryIgnore | VbMsgBoxStyle.vbExclamation | VbMsgBoxStyle.vbDefaultButton3, "Atención_ fallo de proceso");
string message = "";
AhoraCore.VBA.Interaction.MsgBox(resultado.ToString());
switch (resultado)
{
    case VbMsgBoxResult.vbAbort:
        {
            message = "Se ha pulsado Cancelar";
            break;
        }
    case VbMsgBoxResult.vbRetry:
        {
            message = "Se ha pulsado Reintentar";
            break;
        }
    case VbMsgBoxResult.vbIgnore:
        {
            message = "Se ha pulsado Ignorar";
            break;
        }
}

¿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