IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Insertion multiple dans access 2007 [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Insertion multiple dans access 2007
    Bonjour.
    Il y a peu de temps, je posais une question et, suite aux conseils de Richard_35, j'ai recommencé ma base de données pour la faire en deux tables. C'est chose faite, et j'y vois plus clair. Maintenant j'en suis au même point qu'avant. Mais ma demande a changé. Je dois faire des insertions multiples dans la deuxième table, mais sans prendre les données dans la première. Après de multiples recherches, j'ai constaté que c'était impossible. Mais n'y a-t-il vraiment aucun moyen ? Une astuce ? Peut-être une boucle ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Que veux-tu dire par insertion multiples ?

    Si tu dois insérer plusieurs lignes identiques dans une même table, c'est qu'il y a un petit soucis.

    Merci donc de détailler avec un exemple.

    Philippe

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Oh, oui, c'est vrai, j'ai pas précisé .
    Donc j'ai une table avec ID, DD, DF.
    ID est numérique, DD et DF sont des dates.
    Pour insérer une seule ligne, ça va :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO table ( ID, DD, DF )
    VALUES (id, date, date2);

    id, date et date2, je les entre au moment de l'exécution de la requête.
    L'idée serait de pouvoir rentrer plusieurs id et une seule fois date et date2, pour insérer des lignes qui auront donc des ID différents et les mêmes DD et DF. Tout ce que j'ai essayé a raté. Et j'ai l'impression que ce que je recherche, c'est le graal dans access. Une solution ? Je veux dire, une solution autre que : tourne-toi vers Oracle ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    OK, un petit exemple à adapter avec un boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub AjoutLigne()
        ' déclaration
        Dim i As Integer
     
        ' affectation
        For i = 1 To 20
            DoCmd.RunSQL "INSERT INTO TABLE ( ID, DD, DF ) VALUES (" & i & ", date, date2);"
        Next i
    End Sub
    Bien sûr ce n'est qu'un exemple, il faut savoir d'où viennent tes ID.

    Philippe

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci, je vais essayer... et essayer de comprendre en le voyant fonctionner. Je teste et je reviens dire ce qu'il en est. Encore merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Comme je l'ai dit, ce n'est qu'un exemple.

    Il faut également sortir Date et Date2 comme le i, car à mon avis ce sont des variables.

    Philippe

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Après une petite adaptation, ça fonctionne bien :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub AjoutLigne()
        ' déclaration
        Dim i As Integer
     
     
        ' affectation
        For i = 1 To 10
            DoCmd.RunSQL "INSERT INTO Table ( ID, DD, DF ) VALUES (id , date, date2);"
        Next i
    End Sub
    Comme ceci, je peux choisir mes ID à entrer dans Table. Il ne me reste qu'à trouver le moyen de n'entrer qu'une seule fois date et date2. Peut-être en les déclarant comme variable Date et en leur affectant une valeur à l'avance ? J'essaye de comprendre au fur et à mesure, j'apprends comme ça. Tiens, je vais essayer.

    Edit : ça ne fonctionne pas
    Je ne suis pas doué. Mais peut-être que je dois les entrer dans une autre requête sql, et pas dans le module. Par exemple une table temporaire que j'efface sitôt le module exécuté.

    Edit2 : Ne fonctionne toujours pas, mais je ne désespère pas. En fait, date et date2 doivent être des valeurs (dates) fixes.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ca y est, j'ai réussi !
    Je viens poster pour que tout le monde sache comment faire une insertion multiple dans une table access (que j'appelerai ici table_cible).
    Cette table_cible comporte 3 colonnes ID (numérique), DD et DF (date)

    D'abord, j'ai créé deux tables tmp et tmp2 qui ne sont pas temporaires, mais leurs données oui. Dans tmp, il y a une colonne ID (numérique), dans tmp2, il y a deux colonnes D1 et D2 (dates).

    Ensuite, grâce à Philippe JOCHMANS qui m'a été d'une aide précieuse et indispensable, j'ai créé un module qui va insérer autant de ID que je veux dans tmp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub AjoutLigne()
        ' déclaration
        Dim i As Integer
        
        ' affectation
        
        For i = 1 To 4
       ' Ici, j'ai mis 4 pour mon test, il me suffit de changer ce nombre à ma convenance
    
            
            DoCmd.RunSQL "INSERT INTO tmp ( ID ) VALUES (id);"
        Next i
        
    End Sub
    Puis j'ai créé une petite commande en SQL qui insère deux dates dans tmp2 après me les avoir demandé :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO tmp2 ( D1, D2 )
    VALUES (date, date2)

    Et enfin, j'ai créé une autre commande SQL qui insère les données de tmp et tmp2 dans table_cible :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table_cible ( ID, DD, DF )
    SELECT ID, D1, D2
    FROM tmp, tmp2

    Et là, miracle, dans ma table_cible apparaissent les différents ID que j'ai rentré, et chaque ID a les mêmes valeurs pour DD et DF.

    Bien sûr, je n'oublie pas qu'il faut effacer les données de tmp et tmp2 avec un DELETE FROM.
    Il ne me reste plus qu'à créer une macro pour me faciliter la vie, et le tour est joué.

    Merci mille fois Philippe JOCHMANS pour ton aide, je n'y serais jamais arrivé sans toi.
    Résolu donc.

    Edit = Merci également à Richard_35 sans qui je me débattrais toujours dans une base de données avec une table, très compliquée et pas pro du tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion multiple dans Access
    Par ousi64 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/07/2012, 08h57
  2. Autoriser update ou insert dans access 2007
    Par plmoal dans le forum Sécurité
    Réponses: 1
    Dernier message: 20/03/2010, 19h14
  3. stocker du texte d'une richtext box dans access 2007
    Par Ismaël(l) dans le forum IHM
    Réponses: 4
    Dernier message: 30/01/2007, 15h30
  4. insertion multiples dans un meme champ
    Par fétémété dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 13/07/2006, 16h16
  5. insertion date dans access avec code java
    Par voyageur dans le forum Access
    Réponses: 3
    Dernier message: 20/06/2006, 21h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo