[Access] Enregistrement Requetes.

Voilà en fait j'aimerais qu'on sache sauvegarder les résultats d'une requête dans un table dont on définirait le nom à chaque fois...
Dans le genre de l'option save as ou save in je sais pas trop.
Il faudrait que ca crée la table avec les données de la requete en fait.. Est ce possible ?
Merci d'avance

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut, mes connaissance access remonte a la version 9x, et environ a la meme annee, mais oui c'est (c'etait en tout cas) possible au travers des macros ecrites en VBA :o)

    .  .  Dieu a inventé le chat
    \_/  pour que l'homme puisse caresser le tigre
    1. Ah oki et t'aurais plus une petite idée des fonctions à utiliser par hasard ? Car j'suis "novice" en vba lol
      Merci
      1. Contributeur
        Oula, c'est beaucoup demande a ma memoire, ca date de 5 ams je crois :o)
        Mais il me semble que ce que je faisais c'est prendre les resultats de la requete un a un et les inserer dans la nouvelle table (avec une boucle while), rien de sorcier mais je ne me souviens plus de la syntaxe...

        .  .  Dieu a inventé le chat
        \_/  pour que l'homme puisse caresser le tigre
        1. Ah oki... Hum j'vais essayer de me documenter un peu... Le truc le plus dur c'est de demander quelle table on veut créer avec ces données et de dire de faire la table et de mettre les données dedans quoi :-/
          1. Private Sub Command175_Click()
            Dim strInput As String, TableName As String, strMsg As String
            TableName = strInput
            strMsg = "In Wich Table?"
            strInput = InputBox(Prompt:=strMsg, Title:=("Save In"), XPos:=2000, YPos:=2000)
            If strInput <> "" Then
            DoCmd.CopyObject , "Query result", acTable, "TableName"
            Else
            MsgBox "You have to enter a table name"
            End If
            End Sub


            Suis-je dans la bonne voie ? :-/
            1. Contributeur
              Oui :o) Sauf que je ne sais pas si le CopyObject est la bonne chose mais peut etre,...

              .  .  Dieu a inventé le chat
              \_/  pour que l'homme puisse caresser le tigre
              1. Modérateur
                Salut,

                tu veux stocker dans une table qui existe déjà, ou il faut la créer à chaque fois ?

                A+ Blux
                 "Les cons, ça ose tout.
                C'est même à ça qu'on les reconnait"
                1. Dans une nouvelle à chaque fois mais j'ai trouver :)
                  Le seul prob c'est qu'il me mets les enregistrements en décallés a chaque fois en fait...
                  Style :
                  FLangue FSexe
                  FR
                  FR
                  M
                  F
                  Etc...
                  Sinon le code:
                  s = InputBox(Prompt:="Table Name??", Title:=("Do you want to save the query results?"))
                  DoCmd.RunSQL "create Table " & s & " (FLangage Text,FGender Text)"
                  DoCmd.SetWarnings False
                  DoCmd.RunSQL "insert into " & s & " (FLangage) select TblCustomer.FLangage FROM TblCustomer WHERE TblCustomer.FLangage = '" + (Combo1.Value) + "'"
                  DoCmd.RunSQL "insert into " & s & " (FGender) select TblCustomer.FGender FROM TblCustomer"
                  DoCmd.SetWarnings True
                  1. Modérateur
                    C'est parce que tu mets à jour ta table avec 2 requêtes l'une derrière l'autre ! Il ajoute d'abord les langages puis les fgender...

                    Il faut mettre à jour les champs en même temps...

                    Je peux te proposer du VBA un peu plus 'propre' si tu le souhaites :-)

                    A+ Blux
                     "Les cons, ça ose tout.
                    C'est même à ça qu'on les reconnait"
                    1. Ouep j'ai trouver pkoi ca faisait ca...
                      DoCmd.RunSQL "create Table " & s & " (FLangage Text,FGender Text,FLastName Text,FFirstName Text,FTitel Text,FFunction Text,FHierarchy Text,FDept Text,FSpouse Text,FEmail Text,FHospital Text,FHospitalTel Text,FHospitalFax Text,FHospitalPager Text,FHospitalTelOR Text)"
                      DoCmd.SetWarnings False
                      
                      DoCmd.RunSQL "insert into " & s & " (FLangage,FGender,FLastName,FFirstName,FTitel,FFunction,FHierarchy,FDept,FSpouse,FEmail,FHospital,FHospitalTel,FHospitalFax,FHospitalPager,FHospitalTelOR) select TblCustomer.FLangage,TblCustomer.FGender,TblCustomer.FLastName,TblCustomer.FFirstName,TblCustomer.FTitel,TblCustomer.FFunction,TblCustomer.FHierarchy,TblCustomer.FDept,TblCustomer.FSpouse,TblCustomer.FEmail,TblCustomer.FHospital,TblCustomer.FHospitalTel,TblCustomer.FHospitalFax,TblCustomer.FHospitalPager,TblCustomer.FHospitalTelOR FROM TblCustomer WHERE TblCustomer.FLangage = '" + (Combo1.Value) + "'AND TblCustomer.FFunction = '" + (Combo2.Value) + "'"
                      DoCmd.SetWarnings False

                      Comme ca le code est bon.

                      Pkoi il faut mettre a jiur les champs au fait ?

                      Merci :)
                      1. Modérateur
                        Quand je disais "mettre à jour", je pensais à "création" d'une ligne dans la table avec l'ordre insert...

                        A+ Blux
                         "Les cons, ça ose tout.
                        C'est même à ça qu'on les reconnait"