Error estraño al borrar de un DataTable

21/11/2005 - 20:12 por Manue | Informe spam
Hola,
estoy con el Visual Studio 2005. Tengo un DataTable cargado con un Select de
una base de datos Access.
Todo el trabajo que realizo con la tabla me funciona bien, pero hay un punto
donde me da error:
Al intentar borrar, el codigo es el siguiente:

public void borrarDatosGrid()
{

foreach (DataRow fila in dt.Rows)
{
fila.Delete();
}

da.Update(dt); //Aqui es donde salta la excepcion.
dt.AcceptChanges();
}



Creo que el error no se encuentra aqui, ya que si borro directamente no
tengo ningun problema, todo va bien.
El problema se encuentra cuando ingreso datos en el DataTable y a
continuacion borro todo el contenido del DataTable, entonces me salta la
excepcion:

System.Data.DBConcurrencyException was unhandled
Message="Concurrency violation: the DeleteCommand affected 0 of the
expected 1 records."
Source="System.Data"
RowCount=1
.



El codigo de cuando ingreso datos es el siguiente(aqui supongo es donde esta
el problema, ya que sin hacer esto, funciona):

public void guardarCambios()
{
try
{
if (dt.GetChanges() != null)
{
if (MessageBox.Show(this,"¿Desea guardar los
cambios?","Guardar cambios",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
== DialogResult.Yes)
{
da.Update(dt);
}
else
{
dt.RejectChanges();
dgvConta.Update();
}

dt.AcceptChanges();
}
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}




Espero que alguien me ayude, porque yo no veo el error.
Gracias

Preguntas similare

Leer las respuestas

#1 Angel Neri Cervín
23/11/2005 - 15:16 | Informe spam
Y si en vez de borrar una a una las filas probás con

dt.Rows.Clear

ó

dt.Clear



Neri

"Manue" escribió en el mensaje
news:
Hola,
estoy con el Visual Studio 2005. Tengo un DataTable cargado con un Select
de
una base de datos Access.
Todo el trabajo que realizo con la tabla me funciona bien, pero hay un
punto
donde me da error:
Al intentar borrar, el codigo es el siguiente:

public void borrarDatosGrid()
{

foreach (DataRow fila in dt.Rows)
{
fila.Delete();
}

da.Update(dt); //Aqui es donde salta la excepcion.
dt.AcceptChanges();
}



Creo que el error no se encuentra aqui, ya que si borro directamente no
tengo ningun problema, todo va bien.
El problema se encuentra cuando ingreso datos en el DataTable y a
continuacion borro todo el contenido del DataTable, entonces me salta la
excepcion:

System.Data.DBConcurrencyException was unhandled
Message="Concurrency violation: the DeleteCommand affected 0 of the
expected 1 records."
Source="System.Data"
RowCount=1
.



El codigo de cuando ingreso datos es el siguiente(aqui supongo es donde
esta
el problema, ya que sin hacer esto, funciona):

public void guardarCambios()
{
try
{
if (dt.GetChanges() != null)
{
if (MessageBox.Show(this,"¿Desea guardar los
cambios?","Guardar
cambios",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
== DialogResult.Yes)
{
da.Update(dt);
}
else
{
dt.RejectChanges();
dgvConta.Update();
}

dt.AcceptChanges();
}
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}




Espero que alguien me ayude, porque yo no veo el error.
Gracias
Respuesta Responder a este mensaje
#2 Manue
23/11/2005 - 20:05 | Informe spam
Haciendo esto:

dt.Rows.Clear();
ó
dt.Clear();

da.Update(dt);

No me borra las filas de la base de datos, no da error, pero no hace nada.

"Angel Neri Cervín" escribió:

Y si en vez de borrar una a una las filas probás con

dt.Rows.Clear

ó

dt.Clear


Respuesta Responder a este mensaje
#3 Angel Neri Cervín
23/11/2005 - 22:29 | Informe spam
Es que estás trabajando con un DataTable. El CLEAR borrará las filas del
DataTable. Si ese DataTable está dentro de un DataSet, luego podrás volcar
las actualizaciones de ese DataSet en la base de datos.

Pero si lo que necesitas es borrar filas directamente de la base de datos,
quizás te convenga utilizar un Command.

Neri


"Manue" escribió en el mensaje
news:
Haciendo esto:

dt.Rows.Clear();
ó
dt.Clear();

da.Update(dt);

No me borra las filas de la base de datos, no da error, pero no hace nada.

"Angel Neri Cervín" escribió:

Y si en vez de borrar una a una las filas probás con

dt.Rows.Clear

ó

dt.Clear





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida