Copier contenu d'une table vers une autre

cs_goku95 Messages postés 12 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 septembre 2006 - 14 sept. 2006 à 21:08
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 15 sept. 2006 à 19:12
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 sept. 2006 à 21:15
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
0
cs_goku95 Messages postés 12 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 septembre 2006
14 sept. 2006 à 23:14
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 sept. 2006 à 07:10
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
0
cs_goku95 Messages postés 12 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 15 septembre 2006
15 sept. 2006 à 18:45
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
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 sept. 2006 à 19:12
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 !
0
Rejoignez-nous