Recuerda que dispones de una solución a tu disposición en https://github.com/flexygo/HighCode/
El objeto DataManager se usa principalmente para consultar y ejecutar todo tipo de sentencias SQL a las bases de datos de flexygo. Aquí presentamos breves ejemplos de su uso.
Es recomendable siempre construir el objeto con el contexto de seguridad de la sesión, pasándole la información del objeto ProcessHelper.
Cómo se instancia:
'Declaración de variables Dim dmConf As DataManager Dim dmData As DataManager 'Datamanager contra la base de datos de configuración dmConf = New DataManager("ConfConnectionString") 'Si disponemos del ProcessHelper (Ret): dmData = New DataManager(Ret.ConfToken.UserSecurity.ConnectionStrings("DataConnectionString")) 'Datamanager contra la base de datos de datos dmData = New DataManager("DataConnectionString") 'Si disponemos del ProcessHelper (Ret): dmData = New DataManager(Ret.ConfToken.UserSecurity.ConnectionStrings("DataConnectionString")) 'Véase que para construir el objeto, es necesario pasarle el identificador de la cadena de conexión.
También el objeto EntityObject tiene un Datamanager, el cual podemos utilizar para realizar consultas
GetValue
Public Shared Function testGetValue(ByVal Entity As EntityObject, Param1 As Boolean, ByRef Ret As ProcessHelper) Dim dm As DataManager = Entity.DataManager Try 'Obtenemos un valor con GetValue Dim Ne As Integer = dm.GetValue("SELECT Max(IdEjercicio)+1 As NewEjercicio FROM Conta_Ejercicios", "NewEjercicio") Return True Catch e As Exception dm.RollbackTrans() Ret.Success = False Ret.WarningMessage = e.Message Return False Finally End Try End Function
Datatable: Útil para cuando necesitamos consultar/recorrer un conjunto de registros de la base de datos
Public Shared Function ApplyStep(Entity As EntityObject, Ret As ProcessHelper) As Boolean Dim dmData As DataManager Dim dt As DataTable Try dmData = New DataManager("DataConnectionString") dt = dmData.DataTable(String.Format("Select script as field1, field2 from table") 'Control transaccional dmData.BeginTrans() 'recorremos las filas de la tabla For Each row As DataRow In dt.Rows dmData.ExecuteSQLInstruction(IO.File.ReadAllText(Ret.ConfToken.MapPath(row.Item("field1").ToString)).Replace(vbNewLine & "GO", ";")) Next dmData.ExecuteSQLInstruction("sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'") dmData.ExecuteSQLInstruction("sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER all'") If dmData.InTrans Then 'cierro transacción dmData.CommitTrans() End If 'recargar cache y reiniciar aplicación MyCache.Clear() MySession.Clear() Ret.Success = True Ret.JSCode = "location.reload(true)" Return False Catch ex As Exception 'control transaccional. Deshacer transacciones If dmData IsNot Nothing AndAlso dmData.InTrans Then dmData.RollbackTrans() End If Ret.Success = False Ret.LastException = ex Return False Finally If dt IsNot Nothing Then dt.Clear() End If If dmData IsNot Nothing Then dmData.Close() End If If dmConf IsNot Nothing Then dmConf.Close() End If End Try End Function
ExecuteSql
Public Shared Function TestExecuteSql(ByVal Entity As EntityCollection, ByRef Ret As ProcessHelper) As Boolean Try Dim sql As String = "Insert into table (f1, f2, f3, f4) " & "Values ('1','2',3,'4') " Entity.DataManager.ExecuteSql(sql) If Not Entity.DataManager.LastException Is Nothing Then Throw New ArgumentException("process error . " & vbCrLf & Entity.DataManager.LastException.Message) Return False End If Ret.Success = True Return True Catch e As Exception Ret.Success = False Ret.WarningMessage = e.Message Return False Finally End Try End Function
ExecuteStored
Ejecutar storeds procedures con parámetros
'Ejecutar una stored procedure con parámetros 'Tenga en cuenta que si en la stored existen parámetros output, éstos retornarán a la colección de parámetros con su dato actualizado. Dim dm As DataManager = Entity.DataManager Dim params As New BaseCollection 'definimos parámetros params.Add("IdEjercicio1", IdEjercicio) params.Add("IdEjercicio2", Ne) params.Add("PlanContable", PlanContable) params.Add("SubCuentas", CopiarSubcuentas) params.Add("CopiarAños", Renumerar) If dm.ExecuteStored("Ejercicios_Trasvase", params) Then If Defecto Then dm.ExecuteSql(String.Format("Update Empresa set IdEjercicioDefecto={0} where IdEmpresa={1}", Ne, Entity("IdEmpresa"))) End If Else Throw New InvalidOperationException("Error haciendo el trasvase de ejercicio", dm.LastException) End If
ExecuteStoredResult
Ejecutar storeds procedures que retornan conjuntos de resultados en "selects"
Dim dm As New DataManager(Ret.ConfToken.UserSecurity.ConnectionStrings("DataConnectionString")) Dim params As New BaseCollection Dim ds As DataSet If Not dm.ExecuteStoredResult("_testdata", params, ds, "Cli,Emp", True) Then Throw New InvalidOperationException("Error .....", dm.LastException) End If For Each r As DataRow In ds.Tables("Cli").Rows 'Do something 'r.Item("IdClient").ToString Next For Each r As DataRow In ds.Tables("Emp").Rows 'Do something 'r.Item("IdEmployee").ToString Next
Ejemplos prácticos:
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo