Hola amigos, tengo un problema con el comando UPDATECOMMAND que paso
a relataros por si alguna pudiera arrojarme alguna luz.
Tengo un dataset typado que relleno con un READXml con todo exito, a
continuación defino mi conexión, mi DataAdapter, un comando INSERT y un
comando UPDATE, el objeto de estas deficiones es que sincronize con mi base
de datos para que modifique o inserte segun convenga. Mi problema es que el
UPDATE siempre añade, a pesar de que el Dataset en memoria es diferente de
el de la base de datos, éste siempre me añade los registros en la tabla en
vez de modificarlos. No tengo ninguna clave definida en la base de datos,
aunque si en el dataset os paso aproximadamente el codigo:
GestorExportacion ge = new
GestorExportacion(); ->esquema
strConection= @"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\David\BD\XXXX.MDB" + ";Persist Security Info=False";
connExportacion=new
System.Data.OleDb.OleDbConnection(strConection);
connExportacion.Open();
daExportacion=new
System.Data.OleDb.OleDbDataAdapter("Select * FROM TABLA1",connExportacion);
daExportacion.MissingSchemaAction=MissingSchemaAction.AddWithKey;cmd
= new System.Data.OleDb.OleDbCommand("INSERT INTO TABLA1(Campo1, Campo2,
Campo3, Campo4, Campo5, Campo5, Campo5, Campo6, Campo7) VALUES (@Campo1,
@Campo2, @Campo3, @Campo4, @Campo5, @Campo6 @Campo7, @Campo8 @Campo9)",
connExportacion);
cmd.Parameters.Add("@Campo1",
System.Data.OleDb.OleDbType.LongVarChar, 25, "Indice");
cmd.Parameters.Add("@Campo2",
System.Data.OleDb.OleDbType.LongVarChar, 20, "Idioma");
cmd.Parameters.Add("@Campo3",
System.Data.OleDb.OleDbType.LongVarChar, 255, "Codigo1");
cmd.Parameters.Add("@Campo4",
System.Data.OleDb.OleDbType.LongVarChar, 255, "Text1");
cmd.Parameters.Add("@Campo5",
System.Data.OleDb.OleDbType.LongVarChar, 255, "Text2");
cmd.Parameters.Add("@Campo6",
System.Data.OleDb.OleDbType.LongVarChar, 255, "Text3");
cmd.Parameters.Add("@Campo7",
System.Data.OleDb.OleDbType.LongVarChar, 255, "Text4");
cmd.Parameters.Add("@Campo8",
System.Data.OleDb.OleDbType.LongVarChar, 255, "TipoAlta");
cmd.Parameters.Add("@Campo9",
System.Data.OleDb.OleDbType.Integer , 4, "NCopias");
daExportacion.InsertCommand = cmd;
ge.ReadXml(@"C:\David\XML\fichero.XML");
ge.ALTAS.DataSet.Tables["TABLA1"].PrimaryKey= new DataColumn[]
{ge.ALTAS.DataSet.Tables["TABLA1"].Columns["Campo1"]};
try
{
daExportacion.Update(ge.ALTAS.DataSet,"TABLA1");
}
catch(System.Exception e1)
{
Console.WriteLine(e1.Message);
}
¿Alguna sugerencia o codigo que funcione con codigo typado?.
Gracias amigos por adelantado.
David
Gra
Leer las respuestas