Es una de las clases administradoras del ERP, por lo cual es instanciada una sola vez. A través de este objeto tendremos acceso a las funciones más importantes.
A través de éste objeto accederemos también a las propiedades de la conexión tales como Delegación, Usuario, etc.
A continuación se muestra un resumen de las principales propiedades y métodos
FUNCIONES DE CONSULTA
DameValorCampo:
Descripción: Obtiene el valor de un campo de tabla/vista de bbdd.
Parámetros de entrada: Instrucción SQL (con el nombre de campo como única columna de resultados)
Parámetros de salida: Variant / Valor
Más información: DameValorCampo
Ejemplo:
Código VB6:
Variable = gcn.DameValorcampo("Select RazonSocial From Clientes_Datos Where IdCliente = '00000’")
Sub Show() Dim lPathDocumentos lPathDocumentos = gcn.DameValorCampo("SELECT Valor FROM Ceesi_configuracion WHERE parametro = 'PATHFICHEROS'") gCn.Obj.ShowMsgBox lPathDocumentos End Sub
Código C#:
string lRazonSocial= gCn.DameValorCampo("Select RazonSocial From Clientes_Datos Where IdCliente = '00000’");
private void Show() { string lPathDocumentos = gCn.DameValorCampo("SELECT Valor FROM Ceesi_configuracion WHERE parametro = 'PATHFICHEROS'"); AhoraCore.VBA.Interaction.MsgBox(lPathDocumentos); }
DameValorSQL:
Descripción: Ejecuta una consulta SQL devolviendo un único registro con las columnas especificadas de la clausula SELECT.
Parámetros de entrada: Sentencia SQL (string), si se muestran mensajes de error (booleano), array o lista de columnas de la consulta con su respectivas variables separadas por coma.
Parámetros de salida: Variables definidas previamente en la llamada a DameValorSQL (Variant / Valor)
Más información: DameValorSQL
Ejemplo:
Código VB6:
Sub Main() frmAux.Descargar gcn.damevalorsql "Select top 1 IdEmpleado, Nombre,Apellidos from Empleados_Datos",True,"IdEmpleado",lIdEmpleado,"Nombre",lNombre,"Apellidos",lApellidos gCn.Obj.ShowMsgBox "IdEmpleado: " & lIdEmpleado & " " & "Nombre: " & lApellidos End Sub
Código C#:
using AhoraOCX; using AhoraCore; namespace AhoraScriptsVacia { public class Script_0 : AhoraOCX.AhoraBaseScript { public void Main() { Valor lIdEmpleado = ""; Valor lNombre = ""; Valor lApellidos = ""; gCn.DameValorSQL("Select top 1 IdEmpleado, Nombre,Apellidos from Empleados_Datos",true, "IdEmpleado", ref lIdEmpleado, "Nombre", ref lNombre, "Apellidos", ref lApellidos); AhoraCore.VBA.Interaction.MsgBox($"IdEmpleado: {lIdEmpleado} Nombre: {lNombre} {lApellidos}"); } } }
EsAdmonUser:
Descripción: Devuelve un Booleano indicando si el usuario actual pertenece al grupo GRUPOADMIN.
Parámetros de salida: Boolean / bool
Ejemplo:
Código VB6:
Variable = gcn.EsAdmonUser
Código C#:
bool lEsAdmonUser = gCn.EsAdmonUser;
IdEmpresa:
Descripción: Obtiene la empresa donde está actualmente logueado el usuario.
Parámetros de salida: Long / int
Ejemplo:
Código VB6:
Variable = gcn.Idempresa
Código C#:
int lIdEmpresa = gCn.IdEmpresa;
IdDelegacion:
Descripción: Obtiene la delegación donde se ha logueado el usuario
Parámetros de salida: Long / int
Ejemplo:
Código VB6:
Variable = gcn.IdDelegacion
Código C#:
int lIdDelegacion = gCn.IdDelegacion;
IdDepartamento:
Descripción: Obtiene el departamento donde se ha logueado el usuario.
Parámetros de salida: Long / int
Ejemplo:
Código VB6:
Variable = gcn.IdDepartamento
Código C#:
int lIdDepartamento = gCn.IdDepartamento;
IdEmpleado:
Descripción: Obtiene el Id Empleado del usuario
Parámetros de salida: Long / int
Ejemplo:
Código VB6:
Variable = gcn.IdEmpleado
Código C#:
int lIdEmpleado = gCn.IdEmpleado;
BDAActual:
Descripción: Devuelve la base de datos actual
Parámetros de salida: String
Ejemplo:
Código VB6:
Variable = gcn.BDAActual
Código C#:
string lBDAActual = gCn.BDAActual;
UsuarioActual:
Descripción: Devuelve el usuario que hizo login
Parámetros de salida: String
Ejemplo:
Código VB6:
Variable = gcn.UsuarioActual
Código C#:
string lUsusarioActual = gCn.UsuarioActual;
BuscarPropiedad:
Descripción: Devuelve el valor de un campo especificado data una consulta SQL
Parámetros de entrada: Propiedad (String) , instrucción SQL (String)
Parámetros de salida: Variant / Valor
Ejemplo:
Código VB6:
Variable = gCn.BuscarPropiedad("Maximo", "Select IsNull(Max(IdLista),0)+1 Maximo From Listas_PRecios_Cli")
Código C#:
Parámetros que se pasan a BuscarPropiedad -> public Valor BuscarPropiedad(string propiedad, string sentenciaSQL)
Valor lValor = gCn.BuscarPropiedad("Maximo", "Select IsNull(Max(IdLista),0)+1 Maximo From Listas_Precios_Cli");
Existe:
Descripción: Consulta si un campo existe en la tabla
Parámetros de entrada: Campo (String), valor a comprobar (Variant), tabla donde se quiere buscar (String) e instrucción WHERE (String, opcional). Si se le pasan datos en el parámetro Where, ingora los anteriores.
Parámetros de salida: Verdadero / Falso. Devuelve True si existe ese campo en la base de datos.
Ejemplo:
Código VB6:
If gCn.Existe("IdArticulo", "arti001", "Articulos") Then
gCn.Obj.ShowMsgBox ("Ya existe el artículo")
End IF
Código C#:
if (gCn.Existe("IdArticulo", "IdArt0001", "Articulos")) { AhoraCore.VBA.Interaction.MsgBox("Ya existe el artículo"); }
Ejemplo con parámetro WHERE:
- En este caso se omiten los 3 primeros parámetros de la función Existe().
Código VB6:
If gCn.Existe("IdArticulo", "arti001", "Pedidos_Cli_Lineas","SELECT idArticulo FROM Pedidos_Cli_Lineas WHERE idArticulo = 'arti001' AND idPedido = 7") Then gcn.Obj.ShowMsgBox ("Ya existe el artículo") Else gcn.Obj.ShowMsgBox("NO existe el artículo") End If
Código C#:
if (gCn.Existe("IdArticulo", "arti001", "Pedidos_Cli_Lineas", "SELECT idArticulo FROM Pedidos_Cli_Lineas WHERE idArticulo = 'arti001' AND idPedido = 7")) { AhoraCore.VBA.Interaction.MsgBox("Ya existe el artículo"); } else { AhoraCore.VBA.Interaction.MsgBox("NO existe el artículo"); }
ExisteSqlObj:
Descripción: Consulta un objeto de SQL (tabla, campo, procedimiento, desencadenador, etc.).
Parámetros de entrada: Nombre del objeto (String)
Parámetros de salida: Verdadero / Falso
Ejemplo:
Código VB6:
If gCn.ExisteSqlObj("clientes_datos") = True Then gCn.Obj.ShowMsgBox "Existe" Else gCn.Obj.ShowMsgBox "No existe" End If
Código C#:
if (gCn.ExisteSqlObj("Clientes_Datos"))
{
AhoraCore.VBA.Interaction.MsgBox("Existe");
}
else
{
AhoraCore.VBA.Interaction.MsgBox("No existe");
}
FUNCIONES DE EJECUCIÓN
EjecutaStore:
Descripción: Ejecuta un procedimiento almacenado en la BBDD, enviando los parámetros en una matriz.
Parámetros de entrada: Nombre del procedimiento almacenado (String) y lista de parámetros en una matriz (Variant)
Parámetros de salida: Verdadero/Falso. devuelve True si se ha ejecutado correctamente.
Ejemplo:
Código VB6:
lMatlParam(0) = lwhere lMatlParam(1) = lusuario lMatlParam(2) = lorden If Not gCn.EjecutaStore("NombreProceso ", lMatlParam) = True Then gCn.Obj.ShowMsgBox "Error" Exit Sub Else gCn.Obj.ShowMsgBox "Proceso ejecutado correctamente", vbInformation End If
Código C#:
Valor[] lMatlParam = new Valor[] {lWhere, lUsuario, lOrden}; if (!(gCn.EjecutaStore("NombreProceso ", ref lMatlParam))) { AhoraCore.VBA.Interaction.MsgBox("Error"); return; } else { AhoraCore.VBA.Interaction.MsgBox("Proceso ejecutado correctamente", vbInformation); }
EjecutaStoreCol:
Descripción: Ejecuta un procedimiento almacenado en la BBDD, devolviendo los parámetros en una colección.
Parámetros de entrada: Nombre del procedimiento almacenado (String) y una colección con los parámetros (Variant).
Parámetros de salida: Verdadero/Falso, devuelve True si se ha ejecutado correctamente.
Ejemplo:
En la BBDD:
CREATE PROCEDURE [dbo].[pCliente_Store]
@Parametro1 varchar(30),
@Parametro2 varchar(30),
@Parametro3 varchar(50),
@Parametro4 varchar(50) OUTPUT
AS
BEGIN
--Procedimiento que me devuelve la diferencia en días entre las fechas pasadas.
SELECT @Parametro4=DATEDIFF(day,@Parametro1, @Parametro2)
--Incorrecto
--RETURN 0
--Correcto
RETURN -1
END
---Asignar permisos mediante zAsignapermisos
Código VB6:
Set lCol = gcn.DameNewCollection
lCol.add lwhere
lCol.add lusuario
lCol.add lorden
If Not gCn.EjecutaStoreCol("NombreProceso ", lCol) = True Then
gCn.Obj.ShowMsgBox "Error"
Exit Sub
Else
gCn.Obj.ShowMsgBox "Proceso ejecutado correctamente", vbInformation
End If
Set lColParam = gcn.dameNewCollection
lColParam.Add "20090101"
lColParam.Add "20091231"
lColParam.Add "Texto1"
lColParam.Add 0
'Preparo la llamada a la stored
If gcn.EjecutaStoreCol ("pCliente_Store", lColParam) Then
'Recupero el Valor del parámetro de salida
gCn.Obj.ShowMsgBox "Valor parámetro salida: " & lColParam.item(4) ,vbinformation
Else
'Comprobar que exista la store.
gCn.Obj.ShowMsgBox "Error al ejecutar el procedimiento. "
End If
Sub ejEjecutaStorecol Dim lParam Set lParam = gcn.DameNewCollection lParam.add "0" lParam.add CStr(gForm.Controls("IdCliente").text) If Not gCn.EjecutaStorecol("PClientes_Datos_CopiarArt", lParam) Then MsgBox "No se han podido copiar los datos." Else MsgBox "Datos copiados." gForm.Controls("EObjeto").refresh End If End Sub
Código C#:
IVB6Collection<Valor> lCol = gCn.DameNewCollection(); lCol.Add(lWhere); lCol.Add(lUsuario); lCol.Add(lOrden); if (!(gCn.EjecutaStoreCol("NombreProceso ", lCol))) { AhoraCore.VBA.Interaction.MsgBox("Error"); return; } else { AhoraCore.VBA.Interaction.MsgBox("Proceso ejecutado correctamente", vbInformation); }
IVB6Collection<Valor> lColParam = gCn.DameNewCollection(); lColParam.Add("20090101"); lColParam.Add("20091231"); lColParam.Add("Texto1"); lColParam.Add(0); //Preparo la llamada a la stored if (gCn.EjecutaStoreCol("pCliente_Store", lColParam)) { //Recupero el Valor del parámetro de salida AhoraCore.VBA.Interaction.MsgBox("Valor parámetro salida: " + lColParam[4], VbMsgBoxStyle.vbInformation); } else { //Comprobar que exista la store. AhoraCore.VBA.Interaction.MsgBox("Error al ejecutar el procedimiento. "); }
public static void ejEjecutaStorecol() { IVB6Collection<Valor> lParam = gCn.DameNewCollection(); lParam.Add("0"); lParam.Add((gForm.Controls["IdCliente"] as ITextoUsuario).Text); if (!gCn.EjecutaStoreCol("PClientes_Datos_CopiarArt", lParam)) { AhoraCore.VBA.Interaction.MsgBox("No se han podido copiar los datos."); } else { AhoraCore.VBA.Interaction.MsgBox("Datos copiados."); (gForm.Controls["EObjeto"] as IEnlaceObjetos).Refresh(); } }
EjecutaStoreResult:
Descripción: Ejecuta un procedimiento almacenado en la BBDD, enviando los parámetros en una matriz.
Parámetros de entrada: Nombre del procedimiento almacenado (String) y una lista de parámetros en una matriz (Variant, opcional)
Parámetros de salida: Devuelve un RecordSet de tipo IRecordSet.
Ejemplo:
Código VB6:
Variable = Gcn.EjecutaStoreResult ("NombreProceso", lMatlParam)
Código C#:
IRecordSet recordSet = gCn.EjecutaStoreResult("NombreProceso", ref lMatlParam);
ExecuteSQL:
Descripción: Ejecuta una instrucción SQL en la base de datos.
Parámetros de entrada: Instrucción SQL(String), descripción de Error de salida(String, opcional), número de error (Long, opcional), número de registros afectados (Variant, opcional), si se muestra sólo el último error (Boolean, opcional, por defecto
True), tipo de ejecución (Enumeración de tipo eExecTipo, por defecto 0)
Código VB6:
Public Enum eExecTipo eExecAsyncExecute = 16 eExecAsyncFetch = 32 eExecAsyncFetchNonBlocking = 64 eExecExecuteNoRecords = 128 eExecExecuteStream = 1024 End Enum
Parámetros de salida: Devuelve True si se ha ejecutado correctamente.
Ejemplo:
Código VB6:
Gcn.ExecuteSql "INSERT INTO Conta_Subcuentas(IdEjercicio,Subcuenta,Descrip) VALUES (1,’70000000’,’Ventas’)"
Dim lError If Not gCn.ExecuteSql "INSERT INTO Conta_Subcuentas(IdEjercicio, Subcuenta, Descrip) VALUES (1,’70000000’,’Ventas’)" Then gCn.Obj.ShowMsgBox "Error insertando subcuenta" Else gCn.Obj.ShowMsgBox "Subcuenta insertada sin errores" End If
Código C#:
gCn.ExecuteSql($"INSERT INTO Conta_Subcuentas(IdEjercicio,Subcuenta,Descrip) VALUES (1,’70000000’,’Ventas’)");
string lError; if (!(gCn.ExecuteSql($"INSERT INTO Conta_Subcuentas(IdEjercicio, Subcuenta, Descrip) VALUES (1,’70000000’,’Ventas’)", out lError))) { AhoraCore.VBA.Interaction.MsgBox("Error insertando subcuenta; " + lError); } else { AhoraCore.VBA.Interaction.MsgBox("Subcuenta insertada sin errores"); }
OpenResultSet:
Descripción: Obtiene un conjunto de registros de BBDD
Parámetros de entrada: Consulta a ejecutar (String), tipo de cursor (Enumeración, opcional, por defecto eCurDinamico), tipo de bloqueo(Enumeración, opcional, por defecto eBloqSoloLectura), opciones (Long, opcional, por defecto -1), si traza los pasos (Boolean, opcional, por defecto True)
Enum eCursorTipo eCurDinamico = CursorTypeEnum.adOpenDynamic eCurRecorrer = CursorTypeEnum.adOpenForwardOnly eCurConjuntoClaves = CursorTypeEnum.adOpenKeyset eCurEstatico = CursorTypeEnum.adOpenStatic eCurSinDefinir = CursorTypeEnum.adOpenUnspecified End Enum
Enum eBloqueoTipo eBloqOptimistaLotes = LockTypeEnum.adLockBatchOptimistic eBloqOptimista = LockTypeEnum.adLockOptimistic eBloqPesimista = LockTypeEnum.adLockPessimistic eBloqSoloLectura = LockTypeEnum.adLockReadOnly eBloqSinDefinir = LockTypeEnum.adLockUnspecified End Enum
Parámetros de salida: un RecordSet de tipo IRecordSet
Ejemplo:
Código VB6:
Set lcursor = gCn.OpenResultSet("SELECT descrip FROM vArticulos_Vehiculos") Do While Not lCursor.Eof lVehi = lCursor.Campos("descrip ").Value gCn.Obj.ShowMsgBox lVehi lCursor.MoveNext Loop
sql= "Select * from VDocumentos where tabla like 'cliente' and iddocobjeto = "&gForm.Controls("EObjeto").ObjGlobal.Propiedades("IdDoc") Set lrs = gCn.OpenResultSet (sql,2,3) If lrs.EOF Then gCn.Obj.ShowMsgBox "No hay documentos vinculados a este cliente",vbinformation Exit Sub Else gCn.Obj.ShowMsgBox "Hay documentos vinculados a este cliente" ,vbinformation Exit Sub End If
Código C#:
var lCursor = gCn.OpenResultSet($"SELECT descrip FROM vArticulos_Vehiculos"); do { var lVehi = lCursor.Campos["Descrip"].Value; AhoraCore.VBA.Interaction.MsgBox(lVehi); lCursor.MoveNext(); } while (!lCursor.EOF);
string lSql = $"Select * from VDocumentos where tabla like 'cliente' and iddocobjeto = {(gForm.Controls["EObjeto"] as IEnlaceObjetos).ObjGlobal["IdDoc"]}"; IRecordSet lRs = gCn.OpenResultSet(lSql, 2, 3); if (lRs.EOF) { AhoraCore.VBA.Interaction.MsgBox("No hay documentos vinculados a este cliente", vbInformation); return; } else { AhoraCore.VBA.Interaction.MsgBox("Hay documentos vinculados a este cliente", vbInformation); return; }
AhoraProceso:
Descripción: Ejecuta un proceso Ahora_Proceso.
Parámetros de entrada: Nombre del proceso (String), parámetro de retorno (Variant), array con los parámetros que pide el proceso.
Parámetros de salida: Valor que retorna el proceso
Ejemplo:
Código VB6:
Sub Main() frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO. lE_Mail = "destinatario@dominio.es" lAsunto = "Prueba de Asunto" lDetalle = "Prueba de Detalle" lArchivo = "TPV.txt" lRutaArchivo = "F:\Temp\datos.txt" gCn.AhoraProceso "Enviar_Correo", False, gCn, False, lE_Mail, lAsunto, lDetalle, "nada", lRutaArchivo End Sub
Código C#:
using AhoraOCX; using AhoraCore; namespace AhoraScriptsVacia { public class Script_0 : AhoraOCX.AhoraBaseScript { public void Main() { string lE_Mail = "destinatario@dominio.es"; string lAsunto = "Prueba de Asunto"; string lDetalle = "Prueba de Detalle"; string lArchivo = "TPV.txt"; string lRutaArchivo = "F:\Temp\datos.txt"; Valor[] lParams = { lE_Mail, lAsunto, lDetalle, lArchivo, lRutaArchivo }; gCn.AhoraProceso("Enviar_Correo", out _, lParams); } }
ActualizaValorCampo (no usar):
Este método está obsoleto. Se debe utilizar el método ExecuteSql.
BeginTrans, CommitTrans, RollbackTrans:
Descripción: Inicia, confirma o deshace la transacción.
Parámetros de salida: Verdadero / Falso. Devuelve verdadero si se ha ejecutado correctamente.
Ejemplo:
Código VB6:
gCn.BeginTrans 'acciones con control de errores If todoOk = True gCn.CommitTrans gCn.Obj.ShowMsgBox "Finalizado correctamente" Else gCn.RollbackTrans gCn.Obj.ShowMsgBox "Error" End If
Sub ejTransacciones gCn.BeginTrans lsql= "Select * From clientes_datos where IdCliente = " & gForm.Controls("EObjeto").ObjGlobal.Propiedades("IdCliente") If Not gcn.ActualizaValorCampo (lsql, "direccion", "dirección nueva") Then gCn.Obj.ShowMsgBox "No se han podido actualizar los datos." gCn.RollbackTrans Else gForm.Controls("EObjeto").refresh gCn.Obj.ShowMsgBox "Datos actualizados." gCn.CommitTrans End If End Sub
Código C#:
gCn.BeginTrans(); //acciones con control de errores if (todoOk = True) { gCn.CommitTrans(); AhoraCore.VBA.Interaction.MsgBox("Finalizado correctamente"); } else { gCn.RollbackTrans(); AhoraCore.VBA.Interaction.MsgBox("Error"); }
public static void ejTransacciones() { gCn.BeginTrans(); string lSql = $"Select * From clientes_datos where IdCliente ={(gForm.Controls["EObjeto"] as IEnlaceObjetos).ObjGlobal["IdCliente"]}"; if (!(gCn.ExecuteSql(lSql)) { AhoraCore.VBA.Interaction.MsgBox("No se han podido actualizar los datos."); gCn.RollbackTrans(); } else { (gForm.Controls("EObjeto") as IEnlaceObjetos).Refresh(); AhoraCore.VBA.Interaction.MsgBox("Datos actualizados."); gCn.CommitTrans(); } return; }