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:
Constante | Valor | Descripción |
vbOKOnly | 0 | Muestra únicamente el botón OK. |
vbOKCancel | 1 | Muestra los botones Ok y Cancel. |
vbAbortRetryIgnore | 2 | Muestra los botones Anular, Reintentar e Ignorar. |
vbYesNoCancel | 3 | Muestra los botones Sí, No y Cancelar. |
vbYesNo | 4 | Muestra los botones Sí y No. |
vbRetryCancel | 5 | Muestra los botones Reintentar y Cancelar. |
vbCritical | 16 | Muestra el icono de error crítico. |
vbQuestion | 32 | Muestra el icono de pregunta. |
vbExclamation | 48 | Muestra el icono de exclamación. |
vbInformation | 64 | Muestra el icono de información. |
vbDefaultButton1 | 0 | El primer botón tiene el foco. |
vbDefaultButton2 | 256 | El segundo botón tiene el foco. |
vbDefaultButton3 | 512 | El tercer botón tiene el foco. |
vbDefaultButton4 | 768 | El 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
Constante | Valor | Botón |
vbOK | 1 | OK |
vbCancel | 2 | Cancelar |
vbAbort | 3 | Anular |
vbRetry | 4 | Reintentar |
vbIgnore | 5 | Ignorar |
vbYes | 6 | Sí |
vbNo | 7 | No |
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; } }