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