Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/12/2008, 03:39
nephilim2612
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Actualizar una tabla en base a otra

En un principio, y hasta donde yo sé, las librerías de ADO.Net no necesitan que les facilites esa información, ya que la obtienen directamente de la base de datos al recuperar la información. Si pones un punto de interrupción en ese código y analizas el contenido de los dataset, verás que tienen sus objetos Datatable, que a su vez tienen una colección de DataColumn, que definen la estructura de las columnas de una Datatable, y en los que tienes información como el nombre de la columna o el tipo de datos.

El Merge comprobará si la estructura del dataset a "mergear" es compatible con la del dataset "mergeado" y, si es así, comparará fila a fila las tablas de los dataset para determinar como realizar la combinación. Una propiedad interesante de la clase DataRow es RowState que te indica, desde que se cargó, si el contenido o el estado de la fila ha cambiado (incluido si la fila ha sido eliminada).

Tal como está el código y, si no te genera ningún error, se me ocurre que quizá el problema pudiera venir de que tengas alguno de los archivos Access abierto. En otro caso, debería funcionar. Yo consultaría el contenido del dataset que vas a guardar una vez realizado el merge para ver si, efectivamente, contiene la información que debería contener (es decir, el resultado de combinar los dos datasets. Ten en cuenta que si ambos datasets tienen las mismas filas con los mismos ids, el resultado del merge sería no hacer nada, puesto que la comparación devolverá que ambos datasets son idénticos.

P.D: Una vez cerrada una conexión, estaría bien que hicieses una llamada a los métodos dispose, primero en los OleDbDataAdapter y después en los Connection. Así garantizas que no queda "basura" suelta por ahí ;)