DataAdapter avec deux BD. - C#/.NET managed - Programmation
Marsh Posté le 18-05-2007 à 14:25:47
Au lieu de faire un Merge, essaie de faire Insert des lignes du DS source.
Vu que c'est pas la même base, il y a des chances pour que le Merge échoue à cause de ça, tout comme c'est impossible de jouer avec des Nodes XML provement de deux XmlDocuments différents.
D'un autre côté, tu risques d'avoir le même problème avec Insert... Il ne te restera alors plus que la solution de copier les données "à la main"... (en je bossant plus avec les objets "row", mais les valeurs qui sont dedans)
Marsh Posté le 18-05-2007 à 14:28:53
Au niveau du merge, cela fonctionne bien.
Après le merge, j'ai essayé de voire ce qu'il y avait dans le dataset fusionné, et les données étaient bien présentes.
Mais je vais essayer avec l'INSERT, et puis sinon, lignes par lignes...
Marsh Posté le 18-05-2007 à 14:32:50
Ah, ok, si le merge marche, c'est un bon début.
Sinon, effectivement, je sais que je m'étais heurté à un souci avec le Update()
Je ne me souviens plus comment je l'avais résolu, et j'ai pas accès à mes sources là...
Marsh Posté le 18-05-2007 à 14:37:56
Ce qui est étrange c'est qu'il n'y a aucuns messages d'erreurs. Les données ne se copient tout simplement pas.
Merci quand même.
Marsh Posté le 18-05-2007 à 14:39:09
Relou...
Je trouve que ce topic :
http://forum.hardware.fr/hfr/Progr [...] 3525_1.htm
Mais je suis sûr qu'il y a un autre topic dans lequel j'avais fait une copie complète de mon code... Avec le module d'enregistrement
Fait une recherche sur "http://magicsite.manga-torii.com" sur le forum, t'aura peut-être plus de chance que moi
ps : pas la peine de tenter d'ouvrir l'url, mon serveur est down depuis un mois, ma consommation d'électricité avoisine celle de la SNCF, faut que je me calme avec les serveurs allumés plein l'appart
Marsh Posté le 18-05-2007 à 14:40:42
Merci je vais essayer.
Marsh Posté le 18-05-2007 à 14:44:44
ouais, j'ai tout cherché, je trouve désespérément rien.
au mieux, des bouts de code d'un projet dérivé, mais qui fait de la lecture seule
Marsh Posté le 18-05-2007 à 14:48:16
ah, ça me reviens.
après ton FillSchema, fais un Fill (même si la table est vide, ça dit au DS qu'il est correctement lié aux données de ton DA), puis à nouveau un FillSchema
(ne me demande pas pourquoi, me souvient plus de l'explication, mais c'est le seul moyen que j'avais trouvé pour faire marcher le truc avant de trouver une solution plus propre)
Marsh Posté le 18-05-2007 à 15:08:57
Je fais donc un :
Code :
|
Marsh Posté le 18-05-2007 à 15:13:06
Lemminkainen a écrit : Je fais donc un :
|
Pas mieux de succés.
Marsh Posté le 18-05-2007 à 16:09:41
Je viens de retester le Merge, et ça marche niquel.
Le dataset de la BD2 prend bien les infos du dataset de la BD1. C'est uniquement l'update qui merde. C'est rageant.
Marsh Posté le 18-05-2007 à 16:13:37
Ben oui oui oui, si le DS se rempli bien, c'est que ça marche.
Y'a pas un "Save" ou "CommitChanges" ou un truc du genre ?
Marsh Posté le 18-05-2007 à 16:23:00
Si je ne fais pas d'erreur, la fonction update va faire une comparaison et verifier si des lignes ont été ajouté,supprimé,... Et selon, va faire l'instruction necessaire.
Je viens de faire un test après le merge :
Code :
|
Et il me répond False. Ca ne pourrait pas venir de là ?
Marsh Posté le 18-05-2007 à 17:40:55
Si je rajoute une ligne à la fin, ça devrait marcher non, en théorie ?
Marsh Posté le 18-05-2007 à 17:51:23
Aucune idée.
J'ai plutôt l'impression que les lignes ramenées avec Merge ne sont pas comptabilisées comme ajoutée ou modifiées.
Si j'étais toi, je m'orienterais directement vers Insert() d'autant qu'il me semble que tu peux lui passer une collection de rows non ?
=> DS_DB2.Insert(DS_DB1.Rows);
Si ça marche, ça te fait pas de changement fondamental, et ça devrait résoudre ton problème
Marsh Posté le 18-05-2007 à 17:55:47
MagicBuzz a écrit : Aucune idée. |
Oui je vais essayer.
Merci beaucoups pour ton aide.
Marsh Posté le 21-05-2007 à 09:45:50
Bon, je n'ai pas trouvé d'option avec l'insert. Je vais donc remplir le DS1 avec les informations que je veux, et pour chaque table je ferais un insert.
Marsh Posté le 18-05-2007 à 11:58:16
Bonjour,
J'ai un petit problème avec des bases de données CE. J'aimerai à partir d'une base de donnée 1, remplir une base de donnée 2. (Qui contient les mêmes tables que la base de donnée 1, mais ces tables sont vides.)
J'ai essayé les requêtes qui permettent de faire ce genre de chose (Serveur.Base.dbo.tables...) mais apparemment en mobile cela ne fonctionne pas. J'ai donc tenté cette méthode :
1) Récupérer dans un dataset les informations et le schéma d'une table de la BD1
2) Récupérer dans un autre dataset le schéma de la même table mais de la BD2
3) Je fusionne les deux Dataset
4) J'update avec le DataAdapter de la BD2 le nouveau dataset.
Mais cela ne fonctionne pas, je ne vois pas où pourrait se situer l'erreur, sachant que j'ai bien initialisé le SqlceBuilder.
Merci,
Message édité par Lemminkainen le 18-05-2007 à 14:12:28
---------------
Que vois-tu quand tu fermes les yeux ?