inserer tuples d'une table dans une autre db - VB/VBA/VBS - Programmation
Marsh Posté le 15-02-2005 à 14:45:29
Tu pourras ouvrir deux connexions mais tu ne pourras pas faire un INSERT / SELECT qui porte sur les deux à la fois.
Marsh Posté le 15-02-2005 à 14:45:54
je pensais faire un truc du genre:
Do while not controle_ado_local.Recordset_local.EOF
controle_ado_reseau.Recordset_reseau.addNew
controle_ado_reseau.Recordset_reseau!Name =
controle_ado_local.field(nom)
controle_ado_reseau.Recordset_reseau.Update
controle_ado_reseau.Recordset_local.MoveNext
loop
mais sachant qu'il y a +/- 45 champs, c'est lourd non ?
Marsh Posté le 15-02-2005 à 14:53:06
c'est un truc que tu dois faire une seule fois ?
Marsh Posté le 15-02-2005 à 17:58:24
Des qu'une personne clique sur "fusionner", l'ensemble de la table doit etre COPIé vers la table fusion.
Seules les enregistrements nécéssaires doivent etre rajoutés forcement, mais ca je suppose qu'access bloque ca.
Merci
Marsh Posté le 15-02-2005 à 18:03:57
Bah alors, je proposerais :
- tu fais un select (*)
- tu parcours le recordset
- pour chaque ligne, tu effectues un INSERT dans l'autre base
(même si ça me plait moyen quand même).
Autre solution : tu fais des tables liées dans access et alors plus besoin de 2 connexions.
Marsh Posté le 15-02-2005 à 18:05:31
oui, mais, la db sur le pc à pas besoin de cette table_fusion .
Marsh Posté le 15-02-2005 à 18:07:08
Le fait que la table apparaisse signifie pas forcément que l'utilisateur doit aller trifouiller dedans
Si tu veux que ce soit transparent, 1ere méthode
Marsh Posté le 15-02-2005 à 18:09:53
t'as pas compris à mon avis
Sur chaque portable, il y aura la db du gars
Et puis en cliquant sur fusion, ben toutes ces données vont compléter "la grosse table" fusion => la seule table de la db sur le disque reseau.
Marsh Posté le 15-02-2005 à 18:19:14
Si si, j'ai bien compris. C'est pour ça que je suggérais de faire une table lié sur le portable (ie de faire un lien avec la table qui figure sur le réseau).
Mais sinon, reste la solution qui consiste à travailler avec une succession de requetes "INSERT" ou, comme tu le mettais un peu plus haut, naviguer en parallele sur deux recordset (methode que j'aime moins).
Marsh Posté le 15-02-2005 à 18:22:27
moi je prefererais faire le mieux possible, mais comment faire un lien entre ces deux tables ?
comment dire "la table_fusion" qui est ds une db sur le portable est = à "la table_fusion" sur le reseau qui est dans une autre db
Donc qd j'ajoute dans l'une, j'ajoute dans l'autre
Marsh Posté le 15-02-2005 à 18:27:31
T'as pas regardé du coté de la synchronisation sur access non plus ?
Parce que qu'est-ce qui se passe si tu te contente de modifier un enregistrement ?
Marsh Posté le 15-02-2005 à 18:46:06
Y'a un truc pour synchroniser des tables entre elles sous accès. Maintenant, ce que ça vaut
et tu m'as pas répondu : si y'a juste une modif sur la table ?
Marsh Posté le 15-02-2005 à 18:52:11
ben en fait, viens de me renseigner, les données sont ecrasées forcement chaque mois, qd ils font cette table_fusion puisque les données sont pt changées, suprimées .... et le tout retourne dans cette table fusion qui sera vidée
Marsh Posté le 15-02-2005 à 18:53:35
Bah alors te prends pas la tête :
- tu fais un select (*)
- tu parcours le recordset
- pour chaque ligne, tu effectues un INSERT dans l'autre base
Marsh Posté le 16-02-2005 à 09:13:43
Do While Not rs.EOF
rs.moveFirst
'parcours d'une ligne de la table_locale
For i = 1 To tableau.length Step 1
'copiage des champs de cette ligne dans un tableau
tableau(i) = rs.Fields(i)
Next i
'insertion d'une ligne dans l'autre db !!!!!
rs2.AddNew
'copiage des champs du tableau dans les champs de la nouvelle ligne
for i = 1 To tableau.length Step 1
rs2.Fields(i) = tableau(i)
next i
rs2.Update
rs.MoveNext
Loop
Un truc comme çà quoi p
Merci pour l'aide en tout cas
++
Marsh Posté le 15-02-2005 à 13:49:53
Bonjour,
J'ai 2 db's : une sur le pc(D:\), et une sur un disque réseau (F:\).
Celle du F:\ devra contenir tous les enregistrements de toutes les db du D:\ => superdb
Je suppose qu'il faut ouvrir 2 connexions, mais comment faire en VB ? via le modèle ado par exemple.
Query du genre -
insert into table_affaires (F:\)
select * from table_affaires (D:\)
Merci