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 FunctionDatatable: Ú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 FunctionExecuteSql
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 FunctionExecuteStored
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 IfExecuteStoredResult
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
NextEjemplos 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