Boucle for en access pour concatener tables

Fermé
arfi13 - 17 août 2010 à 17:05
 Bobby_64 - 18 août 2010 à 13:44
Bonjour,



voila mon probleme:

j'ai 10 linked tables nommees 1,2,3,4,5,6,7,8,9 et 10. j'aimerais les concatener dnas une table nommee TABLE1.
Est-il possible d'ecrire une boucle du style

for i=1:10
INSERT INTO [TABLE1]
SELECT [i].*
FROM i;

afin d'eviter une dizaine de requete en demandant de concatener a chaque fois...

Merci d'avance......

2 réponses

blux Messages postés 25998 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
17 août 2010 à 20:46
Salut,

si c'est à faire une seule fois, fais-le à la main.

Sinon, prends du VBA, parcours les objets, prends les tables qui t'intéressent et fais une insertion via recordset.
0
ouvre vba, créer un module

public sub concatene()

for i = 1 to 10
strSQL = "SELECT * FROM " & i & ";"
' (ou "SELECT * FROM '" & i & "';")
Set res = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
While Not res.EOF

strSQL = "INSERT INTO Table1 VALUES " & res & ";"

#
je ne pense pas que ça va marcher, si ça ne marche pas:
strSQL = "INSERT INTO Table1 (Champs1, Champs2,... ) & _
VALUES (" & res.Fields("ChampsA") & ", " & res.Fields("ChampsB") & ... & ";"

Champs1, Champs2... les noms des champs dans table1 et champsA, champsB le nom des champs correspondants dans tes tables 1,2,...,10 (il faut que ça soit le même dans toute).
PS: si c'est des string n'oublie pas les '
... (" & res.("Nom") & ",... => ('" & res.("Nom") & "', ...
#

CurrentDb.Execute strSQL
res.MoveNext
Wend
next i
end sub
0