EXTRAER DATOS DE ACCESS
Publicado por IVAN (6 intervenciones) el 23/10/2016 17:00:18
Tengo una aplicación V.B. conectada a una base de datos Access. Lo que hago es hacer una consulta a una de las tablas (que contiene un campo "FECHA" y un campo "SALDO"). En esa tabla almaceno un registro por cada mes que tiene el año (ej. enero16, febrero16, marzo16.... hasta diciembre2100) y en su respectivo campo "Saldo" almaceno un importe. Lo que hace mi aplicación es que cuando actualizo el "Saldo" de uno de esos meses, me actualiza todos los registros posteriores hasta llegar a "diciembre2100". El problema que tengo es que como cada actualización de registro implica actualizar a la vez más de 800 registros, pues tarda como 20 o 30 segundos en actualizarlo todo, y me gustaría que se actualizara al momento de dar la orden de actualizar. Entonces me gustaría saber de qué manera puedo hacer una consulta a la base de datos para obtener todos los registros de la tabla, trabajar con esos datos fuera de la base de datos, y hacer una sola operacion de UPDATE, en vez de 800 UPDATE's). El código que uso es el siguiente.
Utilizo un "While" para que me ejecute un código para actualizar registro por registro hasta llegar al año 2100... y el código que uso para actualizar los registros es el siguiente:
Este código lo realiza más de 800 veces cuando pulso un botón "Actualizar", hasta llegar al año 2100, por eso se ralentiza.
Utilizo un "While" para que me ejecute un código para actualizar registro por registro hasta llegar al año 2100... y el código que uso para actualizar los registros es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Dim consulta13 As String
Dim comando13 As New OleDbCommand
Dim adaptador13 As New OleDbDataAdapter
Dim lector13 As OleDbDataReader
Dim saldomes As Double
Dim saldototal As Double
consulta13 = "SELECT * FROM saldos WHERE CodUsuario=" & usuarios.id & " AND CodPlan=" & planes.id & " AND CodCuenta=" & ComboBoxCuenta.SelectedValue & " AND Fecha=@Fecha"
comando13 = New OleDbCommand(consulta13, bbdd.conexion)
comando13.Parameters.AddWithValue("@Fecha", "01/" & Month(variables.fechasfuturas) & "/" & Year(variables.fechasfuturas))
adaptador13.SelectCommand = comando13
lector13 = comando13.ExecuteReader
If lector13.HasRows = True Then
If lector13.Read Then
saldomes = lector13("Saldo")
If operaciones.gastoingreso = 1 Then
saldototal = saldomes - variables.resultado
Else
saldototal = saldomes + variables.resultado
End If
Dim consulta4 As String
Dim comando4 As New OleDbCommand
Dim adaptador4 As New OleDbDataAdapter
consulta4 = "UPDATE saldos SET Saldo=@Saldo WHERE CodUsuario=" & usuarios.id & " AND CodPlan=" & planes.id & " AND CodCuenta=" & ComboBoxCuenta.SelectedValue & " AND Fecha=@Fecha"
comando4 = New OleDbCommand(consulta4, bbdd.conexion)
comando4.Parameters.AddWithValue("@Saldo", saldototal)
comando4.Parameters.AddWithValue("@Fecha", "01/" & Month(variables.fechasfuturas) & "/" & Year(variables.fechasfuturas))
comando4.ExecuteNonQuery()
Este código lo realiza más de 800 veces cuando pulso un botón "Actualizar", hasta llegar al año 2100, por eso se ralentiza.
Valora esta pregunta


0