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
     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
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