DataAdapter.update

02/07/2004 - 10:03 por Anonimo | Informe spam
hola grupo!

tengo dos tablas identicas en dos bases de datos
distintas.lo que pretendo es comiar en una el contenido de
la otra.para ello utilizo dos dataSets y mege.hasta aqui
todo va bien pero cuando hago
daSource.Update(dsdest.Tables("nombreTabla"))

no me actualiza los cambios.la cuestion es que tampoco me
da ningun error.
agradeceria algun ejemplo.
muchas gracias de antemano.
1Saludo
 

Leer las respuestas

#1 SqlRanger
02/07/2004 - 11:16 | Informe spam
No creo que esa sea la mejor manera de hacer lo que quieres. Existe otra
forma mucho más sencilla y mucho más eficiente. Esta forma consiste en
ejecutar consultas de datos anexados. No dices qué sistema de bases de datos
estás usando. Así que lo más que puedo hacer es ponerte un ejemplo para
Access y otro para SQL Server.

En caso de SQL Server, si las dos bases de datos residen en el mismo
servidor bastaría con ejecutar la siquiente consulta:

INSERT INTO BaseDatosDestino.dbo.TablaDestino
SELECT *
FROM BaseDatosOrigen.dbo.TablaOrigen

En el caso de que las bases de datos residan en servidores diferentes una
solución sería crear en el servidor de destino un servidor vinculado al
servidor de origen y ejecutar la siguiente instrucción en el servidor de
destino:

INSERT INTO BaseDatosDestino.dbo.TablaDestino
SELECT *
FROM ServidorOrginen.BaseDatosOrigen.dbo.TablaOrigen

Para bases de datos de Access podrías ejecutar el siguiente comando en la
base de datos destino:

INSERT INTO TablaDestino SELECT * FROM TablaOrigen IN 'c:\datos\origen.mdb'

De todas formas te voy a comentar por qué el método que estás usando no
funciona ni tampoco te da ningún error. Cuando haces el merge de los dos
datasets:

dsDestino.Merge(dsOrigen)

se copian en dsDestino los registros de dsOrigne que no existen en dsDestino
se actualizan en dsDestino los registros que también existen en dsOrigen con
los datos de dsOrigen

Sin embargo ni los registros nuevos ni los modificados aparecen como tales,
sino que su estado es Unchanged debido a que Merge llama a AcceptChanges en
cada fila insertada o actualizada. Cuando llamas al método update del
Adapter. El Adapter ejecuta el InsertCommand para los registros marcados
como nuevos y el UpdateCommand para los registros marcados como modificados,
como no hay ningún registro marcado así, no ejecuta ningún comando y por
tando no actualiza nada en la base de datos. La única solución a este
problema sería programarte tú mismo tu propio método Merge que no se llamara
al método AcceptChanges cada vez que se actualiza o se inserte un registro
en el dsDestino procedente de dsOrigen.




Saludos:

Jesús López
MVP Microsoft .NET

Preguntas similares