Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2004, 06:51
yTHoR
 
Fecha de Ingreso: abril-2004
Mensajes: 3
Antigüedad: 21 años
Puntos: 0
De acuerdo

Bueno, ya lo conseguí. Pongo aquí la solución por si a alguien le interesa este tema, y para despertar un poco el gusanillo explico brevemente el uso de los DiffGram.

DIFFGRAMS: Es un formato especial de documento XML que genera ADO.NET sobre cualquier conjunto de datos (DataSet) que permite almacenar los datos de la BD de forma local. Podría hacerse algo como lo siguiente (muy util): Pasar datos de una BD a XML DiffGram, enviar ese XML DiffGram a un dispositivo movil (Pocket PC, etc), el dispositivo móvil puede modificar el XML como si de la propia BD se tratase y luego generar otro XML DiffGram. Finalmente se podría actualizar la BD original leyendo el XML DiffGram que almacena los cambios.

------------------ CÓDIGO PARA ACTUALIZAR BD ACCESS --------------

// Se hace la conexión a la BD indicada por "nombreBD"
OleDbConnection Conexion = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + nombreBD);
OleDbDataAdapter Adaptador = new OleDbDataAdapter("SELECT * FROM Tabla",Conexion);
Conexion.Open();

// Carga del DataSet con el XML DiffGram y el Schema XSD
DataSet dsDatos = new DataSet();
dsDatos.ReadXmlSchema (tbRutaXSD.Text);
dsDatos.ReadXml (tbRutaXML.Text, XmlReadMode.DiffGram);

// Se muestran los datos en un DataGrid
dataGrid1.DataSource = dsDatos;
dataGrid1.DataMember = "Tabla";

// Se generan los comandos de actualizacion
OleDbCommandBuilder Comandos = new OleDbCommandBuilder(Adaptador);

// Se almacenan los datos del DataSet en la BD
Adaptador.Update(dsDatos, "Tabla");
Conexion.Close();

------------------ FIN CÓDIGO -------------------

El principal error estaba en "dsDatos.AcceptChanges();" ya que actualiza el dataset de tal forma que al hacer "Adaptador.Update(dsDatos, "Tabla");" no se reconocían cambios que actualizar.

Bueno, si a alguien le interesa ahí está, y si quieren más información ahora que lo he conseguido solo tienen que preguntar.

Bie.