Boucle for en access pour concatener tables

arfi13 -  
 Bobby_64 -
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

  1. blux Messages postés 5044 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
  2. Bobby_64
     
    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