inserer tuples d'une table dans une autre db

inserer tuples d'une table dans une autre db - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 15-02-2005 à 13:49:53   

Reply

Marsh Posté le 15-02-2005 à 14:43:54    

help please c'est super important

Reply

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.


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

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 ?

Reply

Marsh Posté le 15-02-2005 à 14:46:29    

que faire alors ???

Reply

Marsh Posté le 15-02-2005 à 14:53:06    

c'est un truc que tu dois faire une seule fois ?


Message édité par latruffe le 15-02-2005 à 14:53:37

---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

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

Reply

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.


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 18:05:31    

oui, mais, la db sur le pc à pas besoin de cette table_fusion .

Reply

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 :D
 
Si tu veux que ce soit transparent, 1ere méthode :spamafote:


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 18:07:08   

Reply

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.

Reply

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


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

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

Reply

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 ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 18:30:48    

comment ca ?

Reply

Marsh Posté le 15-02-2005 à 18:41:09    

et est-ce que ca passe sous access 97 aussi :( ?

Reply

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 ?

Reply

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

Reply

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

Reply

Marsh Posté le 16-02-2005 à 09:13:43    

:sarcastic:  :sarcastic:     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  :)  :p  
 
Merci pour l'aide en tout cas
 
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed