Borrar primero los registros de la tabla y luego insertar datos

19/09/2006 - 10:23 por Ira | Informe spam
Con este código puedo insertar los datos en la tabla correctamente pero
primero quiero borrar todos los registros de la tabla y no sé como hacerlo.



Gracias,









Dim Conexion As OleDbConnection

Dim Ds As DataSet

Dim TablaAuxiliar As DataTable

Dim Adaptador As OleDbDataAdapter

Dim Cmb As OleDbCommandBuilder

Dim CmbBorrar As OleDbCommandBuilder



'Conectar a la base de datos

Try

Conexion = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=" & "D:\Prueba\Estudios.mdb")

Catch ex As Exception

MessageBox.Show(ex.Message)

End Try



Ds = New DataSet



'Primero borrar todos los datos de una tabla

Adaptador = New OleDbDataAdapter("DELETE * FROM Auxiliar", Conexion)

Adaptador = New OleDbDataAdapter("SELECT * FROM Auxiliar", Conexion)

Cmb = New OleDbCommandBuilder(Adaptador) 'Esta línea crea los comandos
insert, update y delete en nuestro dataadapter



Try

Adaptador.Fill(Ds, "Auxiliar")

Catch ex As Exception

MessageBox.Show("Error en Fill:" & vbCrLf & ex.Message)

End Try



TablaAuxiliar = Ds.Tables("Auxiliar")

Adaptador.Update(Ds, "Auxiliar")



Do

linea = sr.ReadLine 'Se lee linea a linea el fichero

Loop Until linea Is Nothing Or linea = "[ITEMS]"



If linea = "[ITEMS]" Then

linea = sr.ReadLine

Do

'Grabar cada linea en una tabla auxiliar

Grabar_Linea(linea, TablaAuxiliar)

'Terminando de grabar la linea

Adaptador.Update(Ds, "Auxiliar")

TablaAuxiliar.AcceptChanges()

'Leer la siguiente línea

linea = sr.ReadLine

Loop Until linea Is Nothing



End If

sr.Close() 'Cerrar el fichero

'Cerrar la connexion



If Conexion.State = ConnectionState.Open Then

Conexion.Close()

End If

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
19/09/2006 - 12:01 | Informe spam
"Ira" wrote in message
news:
Con este código puedo insertar los datos en la tabla correctamente pero
primero quiero borrar todos los registros de la tabla y no sé como
hacerlo.



No intentes usar un DataAdapter para borrar todos los registros, no está
pensado para eso. Es mejor que uses el método ExecuteNonQuery del objeto
Command:

Dim cmd as New OleDbCommand("DELETE FROM Auxiliar", Conexion)
Conexion.Open()
cmd.ExecuteNonQuery()
Conexion.Close()


Una observación acerca de tu código: Tienes las siguientes líneas una a
continuación de la otra:
Adaptador = New OleDbDataAdapter("DELETE * FROM Auxiliar", Conexion)
Adaptador = New OleDbDataAdapter("SELECT * FROM Auxiliar", Conexion)



La primera sentencia no vale para nada, ya que la segunda "pisa" el
contenido anterior del Adaptador, reemplazándolo por el nuevo. Y en
cualquier caso, la primera sentencia sería incorrecta, ya que el contenido
del string se utiliza para inicializar el ComandText del SelectCommand del
DataAdapter, por lo que no funcionará bien si se le pasa un DELETE.
Respuesta Responder a este mensaje
#2 Ira
19/09/2006 - 12:42 | Informe spam
Gracias Alberto,

Una pregunta más.

¿Porqué necesito un oledbcommandbuilder para poder actualizar la tabla?



"Alberto Poblacion"
escribió en el mensaje news:
"Ira" wrote in message
news:
Con este código puedo insertar los datos en la tabla correctamente pero
primero quiero borrar todos los registros de la tabla y no sé como
hacerlo.



No intentes usar un DataAdapter para borrar todos los registros, no está
pensado para eso. Es mejor que uses el método ExecuteNonQuery del objeto
Command:

Dim cmd as New OleDbCommand("DELETE FROM Auxiliar", Conexion)
Conexion.Open()
cmd.ExecuteNonQuery()
Conexion.Close()


Una observación acerca de tu código: Tienes las siguientes líneas una a
continuación de la otra:
Adaptador = New OleDbDataAdapter("DELETE * FROM Auxiliar", Conexion)
Adaptador = New OleDbDataAdapter("SELECT * FROM Auxiliar", Conexion)



La primera sentencia no vale para nada, ya que la segunda "pisa" el
contenido anterior del Adaptador, reemplazándolo por el nuevo. Y en
cualquier caso, la primera sentencia sería incorrecta, ya que el contenido
del string se utiliza para inicializar el ComandText del SelectCommand del
DataAdapter, por lo que no funcionará bien si se le pasa un DELETE.




Respuesta Responder a este mensaje
#3 Alberto Poblacion
19/09/2006 - 15:17 | Informe spam
"Ira" wrote in message
news:
Una pregunta más.

¿Porqué necesito un oledbcommandbuilder para poder actualizar la tabla?



Lo necesitas a causa de esta sentencia que has metido en tu código:
Adaptador.Update(Ds, "Auxiliar")

El "Update" lo que hace es mirar qué registros han cambiado dentro de la
tabla "Auxiliar" de Ds. Cada vez que se encuentra un registro nuevo, envía
un INSERT al servidor. Si se encuentra un registro modificado, envía un
UPDATE. Y si se encuentra un registro borrado, manda un DELETE. Por lo
tanto, para poder funcionar, tienes que introducir esas tres sentencias
dentro del DataAdapter. Una de las formas de meterlas consiste en darle la
sentencia SELECT y permitir que él solo deduzca a partir del SELECT cómo
deben ser el INSERT, UPDATE y DELETE. El objeto que sabe realizar este
proceso deductivo es el OleDbCommandBuilder. SI introdujeses a mano el texto
de esas sentencias en el DataAdapter, no necesitarías el
OleDbCommandBuilder.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida