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

VBA Access Discussion :

[VBA-A] Insertion dans une table à partir de variables aléatoires


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [VBA-A] Insertion dans une table à partir de variables aléatoires
    Bonjour à tous

    Je suis débutant en VB, Access et tout ce qui y touche de près ou de loin.
    Je travaille actuellement à l'élaboration d'un logiciel statistique sous Access 2003.

    Je vous explique rapidement le fonctionnement de ce logiciel:
    - Je récupère des données à partir de fichiers .txt ou .csv
    - Je les convertis en tables dans une base de données
    - A partir d'une interface graphique, je coche une case dans une table pour effectuer un tri en fonction de la case cochée
    - Je dois ensuite ressortir le résultat sous la forme d'une table avec pour colonnes, 1-la colone au nom de la variable sélectionnée, 2-le nombre de fois que l'on rencontre cette variables dans la table sur laquelle est effectuée le tri.

    J'arrive à saisir correctement la variables à traiter, mais lorsque je veux l'insérer dans ma requêtes SQL et insérer le résultat de cette requête dans une autre table, je ne sais pas comment faire.

    Je vous mets le code afin que vous puissiez m'éclairer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub Tri_à_plat(val As String)
      ' Déclaration des variables
      Dim db As Database, Td As TableDef, Tp As Recordset, valeur As String
      Dim Sql As String, Sql2 As String, Ts As TableDef
      Dim I As Byte, champ As String, MT As Recordset, nb As String
     
      Set db = CurrentDb() ' initialisation de la Base de Données
      Set Td = db.TableDefs("Réclamations") ' initialisation de la table source
      valeur = val 'valeur récupérée et servant au tri
      Sql = "CREATE TABLE Résultats ( " & Chr(9) & valeur & Chr(9) & _
            " CHAR(255), Nombre CHAR(255));" ' requête de création de la table résultat
      ' db.Execute (Sql)
      ' Set Tp = db.Recordsets("Résultats") 'initialisation de la table de destination
      Sql2 = "INSERT INTO Résultats (" & Chr(9) & valeur & Chr(9) & ", Nombre) SELECT " & Chr(9) & valeur & Chr(9) & ",Count(" & Chr(9) & valeur & Chr(9) & ") As Nombre FROM Réclamations WHERE Réclamations.[" & Chr(9) & valeur & Chr(9) & "];" 
         ' requêtes qui compte le nombre de fois qu'est rencontrée la variable
      db.Execute (Sql2)
      MT.MoveFirst
      Imax = MT.RecordCount - 1
      I = 0
      While Not MT.EOF And Not I = Imax
        Tp.AddNew
        Tp(& Chr(9) & valeur & Chr(9) & )= MT.Field(I)
      Wend
     
    End Sub
    Je me suis aperçu que lorsque je ne mets pas la variable entre '& Chr(9) &', cela ne marche pas et me renvoie un message d'erreur.

    Merci de m'aider dans ma tâche!

    Bonne journée!

  2. #2
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    En fonction de la structure de ta table, il faut mettre des ' si tu as des colonnes de type texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "INSERT INTO MaTable (MaCol1,MaCol2, ...) values(' " & TaVariable1 & " ',' " & TaVariable2" , ...) where MesConditions"
    J'espère répondre à ta question !

    EDIT : bizarre, le source passe pas bien dans la balise ...
    le voici :
    Sql = "INSERT INTO MaTable (MaCol1,MaCol2, ...) values(' " & TaVariable1 & " ',' " & TaVariable2" , ...) where MesConditions"

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je te remercie de ce conseil, mais cela n'est possible que si j'insère mes données dans une table créée de manière statique, c'est à dire si je l'ai créée moi même en donnant des noms perso au colonnes, mais ce que je veux c'est que le code crée la table avec les nom des colonnes que je lui passe en paramètre d'entrée de la fonction.

    Comme je l'ai mis dans mon petit bout de code, c'est la variable que je passe en paramètres au début qui détermine le nom de la première colonne, donc la destination du résultat de la requête, et la source de la requêtes en même temps.

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

Discussions similaires

  1. Insertion dans une table à partir d'un fichier texte
    Par romfauch63 dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/05/2008, 09h37
  2. Insertion dans une table à partir d'une Vue
    Par BenMarcel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/10/2007, 20h42
  3. Réponses: 2
    Dernier message: 05/10/2007, 23h49
  4. Réponses: 4
    Dernier message: 27/04/2007, 14h05
  5. Réponses: 4
    Dernier message: 03/06/2006, 12h45

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