Déplacer un enregistrement 'une base à une autre

cs_Adi57 Messages postés 16 Date d'inscription dimanche 28 janvier 2007 Statut Membre Dernière intervention 29 juin 2011 - 27 févr. 2007 à 01:07
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 28 févr. 2007 à 21:24
Bonjour à tous,

Dans mon projet, j'ai deux bases de données, Mabase.mdb et Archive.mdb.
Dans chaque base, j'ai une table nommée Stock (identiques dans les deux bases de données)
Je cherche à déplacer un enregistrement de la table Stock de la base Mabase.mdb vers la table Stock de la base Archive.mdb.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Qui peut venir à mon secours.



 




À tous par avance un grand merci !

14 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
27 févr. 2007 à 09:27
Salut,

L'enregistrement que tu veux déplacé, c'est un seul champs ou plusieurs champs, et de quel type?

A+
Exploreur
0
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
27 févr. 2007 à 10:26
Salut,
Dim tb As New ADODB.Recordset
Dim tb2 As New ADODB.Recordset
Dim bd1 As New ADODB.Connection
Dim bd2 As New ADODB.Connection

bd1.Provider = "microsoft.jet.oledb.4.0"
        bd.ConnectionString = App.Path & "\Mabase.mdb"
        bd.Open


 bd2.Provider = "microsoft.jet.oledb.4.0"
        bd.ConnectionString = App.Path & "\Archive.mdb"
        bd.Open
tb.Open "SELECT * FROM  TA_TABLE", bd1, adOpenDynamic, adLockOptimistic




tb2.Open "SELECT * FROM  TA_TABLE", bd2, adOpenDynamic, adLockOptimistic


 


On Error Resume Next


While (Not tb.EOF)
tb2.AddNew
tb2![champs1] = tb![champ1]
tb2![champs2] = tb![champs2]
tb2.Update
tb.MoveNext
Wend

Voilà,
0
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
27 févr. 2007 à 10:29
Excuse, une petite erreur

bd2.Provider = "microsoft.jet.oledb.4.0"
        bd.ConnectionString = App.Path & "\Archive.mdb"
        bd2.Open
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 févr. 2007 à 13:37
Bonjour,
Si BD1 est ta base courante et BD2 est ta base extene dont le path est xpath
(xpath="C:\TATA\BD2.mdb")






Si TableBD1 est ta table de BD1 & TableBD2 est ta table de BD2
ta requête se présentera ainsi:






"INSERT INTO TableBD2 IN '" & xpath & "' SELECT * FROM TableBD1 WhERE....<conditin>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Adi57 Messages postés 16 Date d'inscription dimanche 28 janvier 2007 Statut Membre Dernière intervention 29 juin 2011
27 févr. 2007 à 21:28
Bonsoir à tous,

Ma base de données est une base Access 2000 avec +/- 30 champs différents, certains au format nombre, d'autres au format texte et encore d'autres au format monétaire ainsi que des cases False/True.
J'utilise des controles Adodc et mon idée était d'utiliser une commande du style insert into, mais je n'ai rien trouvé de similaire.

J'ai aussi essayé le code de bricoyeye ( que je remercie au passage), mais sans succès.




Merci
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
27 févr. 2007 à 21:43
Salut,

Et le code de Chainat05 (inser into....) ?

Car si tu arrives à lire/écrire/supprimer un enregistrement de ta première base avec tes contrôles AdoDc, une fois que tu as lu ou visualiser une ligne entière, ouvre une connection avec ta deuxième base, et insers-y la ligne de ta première base!Non?
N'essayerais-tu pas de faire une sauvegarde de ta Mabase.mdb ?
Si oui, il y a moins compliqué que cela, une fois que tu as fais toutes tes manipes, quand tu ferme ton application, juste avant, copie ta Mabase.mdb dans un répertoire de sauvegarde avec un autre nom, comme tu le dis : Archive.Mdb.
Tu peux faire cela avec FileCopy, voici la syntaxe en connaissant le chemin de ta base, c'est un exemple à adapter suivant le chemin de ta base Mabase.mdb

FileCopy "C:\Mabase.mdb", "C:\Archive.Mdb" 

A+
Exploreur 
0
cs_Adi57 Messages postés 16 Date d'inscription dimanche 28 janvier 2007 Statut Membre Dernière intervention 29 juin 2011
27 févr. 2007 à 23:00
Bonsoir,

Je ne cherches pas à faire une sauvegarde de toute la base de données mais uniquement à sauvegarder l'enregistrement en cours pour alimenter un historique.
J'ai testé le code de Chainat05. Je n'ai aucun message d'erreur mais rien ne se passe.
Voici ma ligne de code
Form2.Adodc1.Recordset.Open INSERT INTO Offres IN 'Archive.mdb' SELECT * FROM Offres WhERE ......

Je suis perdu.

Merci encore
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
27 févr. 2007 à 23:24
Salut,

Regarde cette http://www.laltruiste.com/courssql/cmd_insertinto.html' target='_blank'>page concernat les différentes syntaxe de INSERT INTO...

A+
Exploreur
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 févr. 2007 à 16:38
Bonjour,
Dans :
Form2.Adodc1.Recordset.Open INSERT INTO Offres IN
'Archive.mdb' SELECT * FROM Offres WhERE ......



j' ai relevé deux erreurs
1° l' opération consiste à éxécuter une requête et non ouvrir un recordset
2° Après le mot clé IN , tu dois indiquer le chemin complet de ta base et pas uniquement son nom



tb.EXECUTE "INSERT INTO Offres IN 'C:\TATA\Archive.mdb'  SELECT * FROM Offres WHERE ......
0
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
28 févr. 2007 à 19:03
Salut,


Pourtant mon code marche trés bien chez moi, c'est quoi qui coince chez toi?
0
cs_Adi57 Messages postés 16 Date d'inscription dimanche 28 janvier 2007 Statut Membre Dernière intervention 29 juin 2011
28 févr. 2007 à 19:32
Bonjour tout le monde,
J'ai bien pris note de la remarque de chaibat05.

Dans cette requette tb correspond à quoi.

Merci
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 févr. 2007 à 20:38
tb correspond à ta variable connection
liée à ta base courante...
sinon files nou ton code qui te permet d' ouvrir ta base,
on t' indiquera de quoi il s' agit...
0
cs_Adi57 Messages postés 16 Date d'inscription dimanche 28 janvier 2007 Statut Membre Dernière intervention 29 juin 2011
28 févr. 2007 à 21:00
Re-bonjour,

J'utilise simplement un controle ADODC (Adodc1)
avec les parametres suivants
ADODC1.Connectionstring  :  Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MaBase.mdb;Persist Security Info=False
ADODC1.Recordsource  :  select * from Offres where Ref='AB1234'

Les données du contrôle Adodc1 s'affichent dans des zones de texte pour vérification.

Ensuite j'ai un bouton classer dans lequel je souhaite mettre mon code.

J'espère avoir été assez explicite.

Merci encore
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 févr. 2007 à 21:24
ton ADODC ne te permet de te lier qu' à une table.
alors que tu dois avoir une variable Connection  pour
éxécuter une transaction...


tu as le choix entre
       Dim pWS As Workspace
       Dim pDB As Database
       Set pWS = DBEngine.Workspaces(0)
       Set pDB = pWS.OpenDatabase(CheminBaseCourante)
  
       strQuery ="INSERT INTO......"
       pDb.Execute strQuery


ou bien


Dim bd As New ADODB.Connection
Dim strQuery As string


bd.Provider = "microsoft.jet.oledb.4.0"
        bd.ConnectionString = App.Path & "\Mabase.mdb"
        bd.Open
      
       strQuery ="INSERT INTO......"
       Cmd.Execute strQuery,bd


avec une reserve sur ces dernières lignes car je travaille si rarement
avec Ado qu' il m' arrive d' oublier les fondamentaux...

si quelqu' un passe par là il pourra corriger...
0
Rejoignez-nous