Copier contenu d'une table vers une autre

Signaler
Messages postés
12
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 septembre 2006
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
bonjour,

oila j'ai un petit probleme (gros en fait)
j'essaye depuis un jour a copier le contenu d'une table vers une autre
en mode deconnecte.

j'ai deux tables:
"SupportsTemp" et "Supports" c'est deux tables ont une structure identique
la table "Supports" a cle primaire et est relier avec une autre table "clientsInformations" avec integrite referentielle

je veux me servir de la table "SupportsTemp""SupportsTemp" comme tampon pour se proteger contre
toutes manip accidentelles

quelqu'un peu m'aider stp

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
ouvre deux recordsets : un par table, puis :

Dim oField As ADODB.Fields
While not recordset1.EOF

       recordset2.addnew
    For Each oField in recordset1.Fields

       recordset2.fields(oField.Name).Value = oField.Value

    next oField
    recordset2.update
    recordset1.movenext

Wend
Messages postés
12
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 septembre 2006

merci pour ta reponse

je comprend pas trop ton truc,  pour l'instant j'ai fait ca, mais ca marche pas lol normal

Dim recordset1 As ADODB.Recordset
Dim recordset2 As ADODB.Recordset
Dim oField As ADODB.Fields



Set recordset1 = CurrentProject.Connection.Execute("select* from SupportsTemp")
Set recordset2 = CurrentProject.Connection.Execute("select* from Supports")




While Not recordset1.EOF


       recordset2.AddNew
       
    For Each oField In recordset1.Fields


       recordset2.Fields(oField.Name).Value = oField.Value
ca me jete a cet endroit ca me dit "membre de donne introuvable"
je me doute bien quil faut quelque part que jintroduis mes nom de champs mais ou ??


    Next oField
    recordset2.Update
    recordset1.MoveNext


Wend
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Bah non justement, c'est l'intérêt du oField.Name : il contient le nom d'un champs, et le For Each parcourt ta table champs par champs.

Là je vois pas trop pourquoi ca ne marche pas : j'utilise ce code depuis plus de 2 ans chez moi sans problème ! Es-tu sûr que tes deux tables ont EXACTEMENT le même nombre de champs et qu'ils sont nommés de la même façon ?

Si oui, il faut aussi faire attention avec les champs avec des espaces ! Si un champ possède des espaces, essaye alors ceci :
recordset2.Fields("[" & oField.Name & "]").Value = oField.Value
Messages postés
12
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
15 septembre 2006

Private Sub CopyButton_Click()

Dim recordset2 As ADODB.Recordset
Dim recordset1 As ADODB.Recordset

Set recordset1 = CurrentProject.Connection.Execute("select* from SupportsTemp")
Set recordset2 = CurrentProject.Connection.Execute("select* from SupportsTemp2")

Dim oField As ADODB.Fields
While Not recordset1.EOF

       recordset2.AddNew
    For Each oField In recordset1.Fields

       recordset2.Fields(oField.Name).Value = oField.Value

    Next oField
    recordset2.Update
    recordset1.MoveNext

Wend

voila j'ai fait un nouveau test !
la table suppotsTemp2 est l'identique de la table supportsTemp
les champs sont identique, meme nom, meme structure

quand je lance l'appli ca me met un message d'erreur
au niveau de l'instruction ".Value" en rouge
"methode or groupe de donnee non trouvee"

lol
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Arf, petite erreur de saisie : ce n'est pas
Dim oField As ADODB.Fields
Ce qui fait référence à la collection Fields de ADODB, mais :
Dim oField As ADODB.Field

Ce qui fait référence à l'objet Field !