Intento hacer una actualizacion sobre una bd en base a otra y buscando encontre muchos posts y ejemplos aunque no pude hacer funcionar ninguno.
Tengo dos tablas en bases de datos distintas, pero que en principio serian del mismo tipo (access) y con la misma estructura.
Mi intencion es actualizar una tabla en base a la otra. Cuando un registro tenga un valor distinto al de la otra tabla en un determinado campo (que desde ya no seria la clave) deberia actualizar ese campo. En el caso de que un registro no exista agregarlo y en el caso de que haya sido borrado de la tabla principal, borrarlo en la secundaria. Todo esto no seria de forma sincrnoizada sino en determinado momento, por ejemplo al clickear en un boton.
Para intentar resolverlo lo que hice fue armar dos datasets, uno sobre cada tabla y luego utilizar el metodo merge, pero no funciona y seguramente hay mas de un error en el codigo. Aunque no se genera ninguna excepcion, las actualizaciones no se realizan.
Código:
Una segunda opcion que se me ocurrio seria utilizar un tercer dataset y a traves tambien del metodo merge incluir en el solo las filas distintas. Luego habria que ir recorriendolo y hacer las actualizaciones una por una, pero creo que tendria un rendimiento malo y no estoy seguro si es la forma correcta.Dim sqlstr As String = "select * from personas" conexion.Open() Dim ds As New DataSet Dim da As New OleDb.OleDbDataAdapter(sqlstr, conexion) da.Fill(ds) conexion2.Open() Dim ds2 As New DataSet Dim da2 As New OleDb.OleDbDataAdapter(sqlstr, conexion2) da2.Fill(ds2) ds.AcceptChanges() ds2.Merge(ds) da.Update(ds) conexion.Close() conexion2.Close()
Desde ya agradezco por cualquier ayuda o sugerencia,
Leo