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”) |
ShowMsgBox | Muestra 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 | |
VBS | InputBox | Solicita un valor al usuario | lVar = 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.
Ejemplo: Mantenimiento 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.