Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2008, 11:57
leoi
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 9 meses
Puntos: 1
Actualizar una tabla en base a otra

Hola,

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:
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()
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.

Desde ya agradezco por cualquier ayuda o sugerencia,

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad