Visual Basic.NET - Insertar en access varios registrosTarda muchísimo

 
Vista:

Insertar en access varios registrosTarda muchísimo

Publicado por Batilo (49 intervenciones) el 19/03/2007 10:42:25
Quiero insertar muchos registros en access (16 registros ) y tengo el problema de que con el método que uso tarda muchísimo.

He escrito un procedimiento de inserción al que llamo 16 veces. Cada vez que lo llamo la cadena Sql es distinta.

Alguien puede mejorar mi código :

Function ComandoActualizacion(ByVal Sql As String)
Dim Conexion as String
Conexion="Data Source= C:\MiRuta\MiBaseDatos.mdb; Provider = Microsoft.jet.OleDB.4.0;"

Dim oDataAdapter As New OleDb.OleDbDataAdapter(Sql, Conexion)
Dim oConexion As OleDb.OleDbConnection
Dim I, iResultado As Integer

oConexion = New OleDb.OleDbConnection
oConexion.ConnectionString = Conexion

If oConexion.State = ConnectionState.Closed Then oConexion.Open()

Dim oCmdInsercion As New OleDb.OleDbCommand(Sql, oConexion)

oDataAdapter.InsertCommand = oCmdInsercion
iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery

End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar en access varios registrosTarda muchís

Publicado por Guillermo (4 intervenciones) el 24/03/2007 15:30:31
Marcelo,
El codigo no se puede reducir mas, se me ocurre que podrias hacer todas las tareas previas (apertura de conexion, creacion de objetos, etc) una sola vez fuera de la funcion en lugar de 16 veces, y utilizar la funcion solo para realizar el agregado del registro, pasando los demas valores como parametros (con el objeto connection deberia ser suficiente).

Guillermo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar en access varios registrosTarda muchís

Publicado por Batilo (49 intervenciones) el 24/03/2007 18:08:31
Gracias Guillermo. Hice lo que decías y funcionó. Ahora tarda bastante menos.
No hay más que insertar estas dos lineas (la veces que sea necesario).

oCmdInsercion.CommandText = "INSERT INTO Mitabla..."
iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery

Este sería el nuevo código:

Function ComandoActualizacion(ByVal Sql As String)
Dim Conexion as String
Conexion="Data Source= C:\MiRuta\MiBaseDatos.mdb; Provider = Microsoft.jet.OleDB.4.0;"

Dim oDataAdapter As New OleDb.OleDbDataAdapter(Sql, Conexion)
Dim oConexion As OleDb.OleDbConnection
Dim I, iResultado As Integer

oConexion = New OleDb.OleDbConnection
oConexion.ConnectionString = Conexion

If oConexion.State = ConnectionState.Closed Then oConexion.Open()

Dim oCmdInsercion As New OleDb.OleDbCommand(Sql, oConexion)

oDataAdapter.InsertCommand = oCmdInsercion
iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery

oCmdInsercion.CommandText = "INSERT INTO Mitabla..."
iResultado = oDataAdapter.InsertCommand.ExecuteNonQuery

End Function

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar