VBScript

 

VBScript es un lenguaje de programación interpretado por el Windows Scripting Host, con una sintaxis muy parecida a Visual Basic. Mediante la inclusión de los objetos propios de la aplicación, nos permite el acceso a toda la información, así como la ejecución de código personalizado.

 

 

Para crear uno nuevo, seleccionaremos “Agregar” -> “Scripts”

 

 

 

 

 

Objetos disponibles

 

gCn: Objeto conexión. A través de el se tiene acceso a la base de datos.

Obj: Objeto Objetos. A través de el se tiene acceso a las colecciones y objetos de la aplicación

Iitem: Representa un objeto de la aplicación instanciado

 

A continuación se muestra un resumen de las principales propiedades y métodos

 

Objeto

Nombre

Descripción

Ejemplo

gCn

DameValorCampo

Obtiene el valor de un campo de tabla/vista de bbdd.

Variable = gCn.DameValorcampo(“Select RazonSocial From Clientes_Datos Where IdCliente = ‘00000’”)

 

DameNewCollection

Retorna un objeto de tipo Collection al que se le puede añadir objetos o variables. Es útil cuando queremos ejecutar una Stored Procedure y necesitamos pasarle parámetros.

Set lCol = gCn.DamenewCollection

lCol.Add 1

lCol.Add “esta es la descripción”

 

EjecutaStoreCol

Ejecuta un procedimiento almacenado en la BBDD, enviando los parámetros en una colección.

Set lCOlParam = gcn.DameNewCollection

lColParam.add “00001”

Gcn.EjecutaStoreCol(“NombreProceso”,lColParam)

 

EsAdmonUser

Devuelve un booleano indicando si el usuario actual pertenece al grupo Desarrollo

Variable = gcn.EsAdmonUser

 

ExecuteSQL

Ejecuta una instrucción SQL en la base de datos

Gcn.ExecuteSql “INSERT INTO Conta_Subcuentas(IdEjercicio,Subcuenta,Descrip) VALUES (1,’70000000’,’Ventas’)”

 

IdDelegacion

Obtiene la delegación donde se ha logueado el usuario

Variable = gcn.IdDelegacion

 

IdDepartamento

Obtiene el departamento donde se ha logueado el usuario.

Variable = gcn.IdDepartamento

 

IdEmpleado

Obtiene el Id Empleado del usuario

Variable = gcn.IdEmpleado

 

IdEmpresa

Obtiene la empresa donde se ha logueado el usuario.

Variable = gcn.Idempresa

 

OpenResultSet

Obtiene un conjunto de registros de BBDD

Set lRecordset = gcn.OpenResultSet(“Select * From Clientes_Tipos”)

 

 

 

 

Obj

DameColeccion

Obtiene una colección de objetos con un criterio

Set lCol = gcn.Obj.DameColeccion("Facturas","WHERE IdCliente = ‘00010’”,,False)

 

DameObjeto

Obtiene un objeto en concreto

Set lFactura=gcn.Obj.DameObjeto(“Facturas_Deudores”,”Where IdFactura = 1”)

 

DameObjStr

Obtiene un nuevo objeto

Set lArticulo = gcn.obj.DameObjStr(“Articulo”)


ShowMsgBoxMuestra un mensaje


  If gcn.obj.showMsgBox ("¿Confirma que desea buscar el proveedor?",vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmación") = vbyes Then

    gcn.obj.showMsgBox lVar,vbInformation,"Cadena que usted introdujo"

  End If






VBSInputBox
Solicita un valor al usuariolVar = InputBox ("Introduzca el nombre del proveedor:","Buscador de proveedor")

 

 

 

 

Iitem

Imprimir

Imprime el objeto

Set lFactura=gcn.Obj.DameObjeto(“Facturas_Deudores”,”Where IdFactura = 1”)

lFactura.Imprimir

 

Modificado

Indica si el objeto ha sido modificado 

Variable = lFactura.Modificado

 

Nuevo

Indica si el objeto es nuevo (no se ha grabado en BBDD)

Variable = lFactura.Nuevo

 

Objetos

Nos da acceso a la Colección de objetos dependientes del objeto

lFactura.Objetos(“Factura_Deudor_Lineas”)

 

Propiedades

Devuelve o establece el valor de las distinas propiedades (campos) del objeto

lFactura.Propiedades(“DescripcionFact”)=”Ejemplo descripción”

 

Show

Muestra el objeto en pantalla

lFactura.Show

 

Update

Guarda el objeto en BBDD

lFactura.Update

 

 


Ejemplo: Buscador VBScript de Facturas por Año y descripción de cliente.

 

Crearemos un nuevo script e introduciremos el siguiente código.


Código VB6:

Sub Main()
  frmAux.Descargar 
  lDescCliente=InputBox("Introduzca la descripción de cliente:")
  If len(lDescCliente)=0 Then
    exit sub      
  end If  
  lFecha=InputBox("Introduzca el año:")
  If len(lFecha)=0 Then
    exit sub      
  end If    
  Set lCol=Gcn.Obj.DameColeccion("Facturas","WHERE IdFactura IN (SELECT DISTINCT IdFactura from Facturas_Cli_Cab a1 inner join clientes_datos a2 on a1.idcliente=a2.idcliente WHERE  a2.cliente like '%" & lDescCliente & "%' AND DATEPART(yyyy,a1.FechaFact)= " & lFecha & ")",,False)       
  If lCol is Nothing then        
    Msgbox "No existen facturas para esa descripción de cliente y año.", vbExclamation,"Atención"        
  Else        
     lcol.show      
  End If         
 End Sub

Código C:

using AhoraCore;
using AhoraOCX;
using AhoraSistema;
using static AhoraCore.VBA.Interaction;

namespace AhoraScriptsVacia
{
    public class Script_35 : AhoraOCX.AhoraBaseScript
    {
        public void Main()
        {
            Valor lDescCliente = InputBox("Introduzca la descripción del cliente:");
            if (lDescCliente.ToString().Length == 0)
            {
                return;
            }
            Valor lFecha = InputBox("Introduzca el año:");
            if (lFecha.ToString().Length == 0)
            {
                return;
            }
            IColecciones lCol = gCn.Obj.DameColeccion("Facturas", "WHERE IdFactura IN (SELECT DISTINCT IdFactura from Facturas_Cli_Cab a1 inner join clientes_datos a2 on a1.idcliente = a2.idcliente WHERE a2.cliente like '%" + lDescCliente + "%' AND DATEPART(yyyy, a1.FechaFact) = " + lFecha + ")");
            if (lCol == null)
            {
                MsgBox("No existen facturas para esa descripción de cliente y año.", VbMsgBoxStyle.vbExclamation, "Atención");
            }
            else
            {
                lCol.Show();
            }
        }
    }
}


El resultado de este script serán dos pantallas donde nos preguntará la descripción del cliente y el año, y como resultado nos mostrará en una nueva ventana la colección de facturas correspondiente.

 

 

EjemploMantenimiento VBScript de Efectos

 

Código VB6:

Sub Main()
 frmAux.descargar 

 Set lFrm = gcn.ahoraproceso ("NewFrmMantenimiento",False,gcn)
 lfrm.Form.NombreForm = "PERS Cartera Clientes"
 With lFrm.Grid("Cartera Cliente") 
  .Agregar = False
  .Editar = False
  .Eliminar = False
  .CargaObjetos = False
  .EditarPorObjeto = False
  .AgregaColumna "IdDoc", 0, "IdDoc", True 
  .AgregaColumna "IdFactura", 0, "IdFactura", True 
  .AgregaColumna "NumFactCliente", 800, "NumFact", True 
  .AgregaColumna "IdCliente", 800, "IdCliente", True 
  .AgregaColumna "Cliente", 4000, "Cliente", True
  .AgregaColumna "Tipo", 800, "Tipo", True
  .AgregaColumna "DescripEstado", 800, "Estado", True
  .AgregaColumna "FechaVencimiento", 1000, "Fecha Vto", True
  .AgregaColumna "FechaCobro", 1000, "Fecha Cobro", True 
  .AgregaColumna "Observaciones", 2000, "Observaciones", True
  .AgregaColumna "ImporteTotal", 1000, "Importe", True,,,"#,##0.00"
  .Campo("NumFactCliente").Coleccion="Facturas"
  .Campo("NumFactCliente").ColeccionWhere="WHERE IdFactura=@IdFactura"
  .Campo("IdCliente").Coleccion="Clientes"
  .Campo("IdCliente").ColeccionWhere="WHERE IdCliente=@IdCliente"
  .From = "VClientes_Efectos"
  .OrdenMultiple="Cliente,IdEfecto"
  .Where = ""
  .Refresca = True
 End With
 lFrm.form.Width=13600
 lFrm.Form.Caption = "Cartera clientes"
 lFrm.MuestraFiltro("Cartera Cliente") = True
 lFrm.Carga , True, 4
End Sub

Código C#:

using AhoraAsistentes;
using AhoraOCX;

namespace AhoraScriptsVacia
{
    public class Script_36 : AhoraOCX.AhoraBaseScript
    {
        public void Main()
        {
            IFrmMantenimientos lFrm = (IFrmMantenimientos)gCn.AhoraProceso("NewFrmMantenimiento", out _, gCn);
            lFrm.NombreForm = "PERS Cartera Clientes";
            ICntGridUsuario lGrid = lFrm["Cartera Cliente"];
            if (!lGrid.Preparada)
            {
                lGrid.Agregar = false;
                lGrid.Editar = false;
                lGrid.Eliminar = false;
                lGrid.CargaObjetos = false;
                lGrid.EditarPorObjeto = false;
                lGrid.AgregaColumna("IdDoc", 0, "IdDoc", true);
                lGrid.AgregaColumna("IdFactura", 0, "IdFactura", true);
                lGrid.AgregaColumna("NumFactCliente", 53, "NumFact", true);
                lGrid.AgregaColumna("IdCliente", 53, "IdCliente", true);
                lGrid.AgregaColumna("Cliente", 267, "Cliente", true);
                lGrid.AgregaColumna("Tipo", 53, "Tipo", true);
                lGrid.AgregaColumna("DescripEstado", 53, "DescripEstado", true);
                lGrid.AgregaColumna("FechaVencimiento", 67, "FechaVencimiento", true);
                lGrid.AgregaColumna("FechaCobro", 67, "FechaCobro", true);
                lGrid.AgregaColumna("Observaciones", 133, "Observaciones", true);
                lGrid.AgregaColumna("ImporteTotal", 67, "Importe", true,"", false, "#,##0.00");
                lGrid.Campo("NumFactCliente").Coleccion = "Clientes";
                lGrid.Campo("NumFactCliente").ColeccionWhere = "WHERE IdFactura = @IdFactura";
                lGrid.Campo("IdCliente").Coleccion = "Clientes";
                lGrid.Campo("IdCliente").ColeccionWhere = "WHERE IdCliente = @IdCliente";
                lGrid.ColumnaEscalada = "DescripEstado";
                lGrid.From = "VClientes_Efectos";
                lGrid.OrdenMultiple = "Cliente, IdEfecto";
                lGrid.Where = "";
                lGrid.Refresca = true;
            }
            lGrid.Refresca = true;
            lFrm.Form.Width = 907;
            lFrm.Form.Text = "Cartera Clientes";
            lFrm.SetMuestraFiltro("Cartera Cliente", true);
            lFrm.Carga(null, false, EBotonesMant.eBotMant_Cerrar);
        }
    }
}


Con En este ejemplo obtenemos un mantenimiento rápido de efectos de cartera, pudiendo desde el mismo acceder a las facturas o las fichas de los clientes.

 

Ejemplo disponible en el siguiente artículo.