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 :

Renommer un champ de requête à l'aide d'une variable issue d'un formulaire


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Renommer un champ de requête à l'aide d'une variable issue d'un formulaire
    Bonjour!

    Je m'occupe d'une base de données Access qui sert à recenser des factures et des flux bancaires, et à stocker la comptabilité de la boite. Le but est de pouvoir faire du contrôle de gestion à partir de tout ça.

    Pour le contrôle de gestion, nous utilisons un logiciel avec lequel on peut importer des données depuis Excel, sous conditions que les données soient organisées selon un modèle bien précis. Il faut que les formats de champs et les noms de champs correspondent exactement, sinon l'importation d'Excel vers le logiciel de CDG échoue.

    En bref, ça donne:

    Access-> Export -> Excel - > Export - > logiciel de CDG

    ***

    Au moment où on saisit les factures dans la base, on attribue à chacune une catégorie et une entité.

    Avec une requête simple on peut donc, pour un mois donné, obtenir la somme des montants indiqués sur les factures, classés par catégorie et par entités.

    Cela fait 3 champs de requête visibles: catégorie, entité, sommedeMontants
    Et 2 champs de requête invisibles: mois, année

    Pour obtenir cette requête, j'utilise un formulaire dans lequel il y a 2 zones de textes au format numérique: une qui reçoit un numéro de mois qu'on choisit dans une liste déroulante, l'autre qui reçoit une année. On appuie ensuite sur un bouton qui déclenche une macro qui ouvre la requête avec pour critères les mois qu'on a entré dans le formulaire.

    ***

    J'en viens à mon problème:

    Pour que le logiciel de CDG accepte le format de mon fichier d'importation Excel, il faut que le nom du champ où il y a les montants pour chaque compte soit nommé sous la forme 01/mm/aaaa , ce qui correspond au mois concerné par la requête dont on a renseigné les critères dans le formulaire.

    J'aimerais donc pouvoir faire en sorte que le champ de la requête avec les montants reçoive comme nom les critères remplis dans le formulaire.


    En SQL, en gros, j'aimerais que ça donne, pour la partie select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select gnagna AS categorie, gnagna2 AS entite, sum(montants_factures) AS "01/"& [Formulaires]![F_Critères]![champ_mois]&"/"&[Formulaires]![F_Critères]![champ_année]
    Le problème, c'est qu'Access n'a pas l'air d'accepter que je rentre des variables derrière le AS du code SQL. Je n'arrive qu' à forcer le coup en mettant moi même le "01/01/12" derrière le AS.

    Est ce que vous avez une idée pour que le champ se renomme automatiquement avec les données tirées du formulaire de critère?

    Merci d'avance!

    Sdechabot

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Ajoute un champ Expression (toto: ...) dans ta requête en mode création classique (avec les colonnes de champs et les lignes). Tu y verras plus clair qu'avec le SQL.

    titi95

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse rapide.

    Au début, j'ai essayé avec le mode création classique, mais ça ne marchait pas plus.

    Access n'acceptait pas que j'écrive:

    "01/"& [Formulaires]![F_Critères]![champ_mois]&"/"&[Formulaires]![F_Critères]![champ_année] : sum(montants_factures)

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    ... [champ_année] : sum(montants_factures)
    Bizarre ces 2 points ( : ) ! Ce n'est pas bon

    Dans un champ libre de ta requête tu écris ton expression.
    Tu peux éventuellement ouvrir le générateur d'expression (clic droit, Créer)
    Puis tu insères un nom suivi des 2 points, tout au début, comme Toto:

    titi95

  5. #5
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour titi95 et sdechabot.
    Je pense Sql utilise le format date américain (mm-dd-yyyy) meme si access "traduit" à partir du format français. Ensuite la date doit etre entourée de dièse (#).
    Dans ta requete celà devrait donner au format français :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(montants_factures) AS #" & "01/" & [Formulaires]![F_Critères]![champ_mois] & "/" & [Formulaires]![F_Critères]![champ_année] & "#"
    aux format us:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(montants_factures) AS #" & [Formulaires]![F_Critères]![champ_mois] & "/01/" &  [Formulaires]![F_Critères]![champ_année] & "#"
    Essaye et dis nous !
    Cdlt

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai tenté.

    Voici le message d'erreur obtenu:

    Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte

  7. #7
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Désolé de me répéter
    Dans un champ libre de ta requête tu écris ton expression.
    Tu peux éventuellement ouvrir le générateur d'expression (clic droit, Créer)
    Puis tu insères un nom suivi des 2 points, tout au début, comme Toto:
    Tu es débutant : oublie le langage SQL pour le moment ! Il fait perdre un temps fou, et pour rien ! Voir le nombre de sujets sur ce forum simplement sur des pb de syntaxe.

    Crée ta requête en mode Création classique (avec les colonnes de champs et les lignes). Ça te permettra d'y voir plus clair.
    On verra après ce que cela donne.

    Conseil d'un ancien... débutant

    titi95

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Pourquoi, à défaut d'une solution, ne pas contourner le problème ...

    Nouvelle chronologie a appliquer:

    1)- Au lieu d'une requête Sélection, passer en requête Création table création table temporaire [T_Export]
    .... basée sur tes mêmes critères
    Cela fait 3 champs de requête visibles: catégorie, entité, sommedeMontants
    Et 2 champs de requête invisibles: mois, année
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    . . .
    'Exécution requête création table
    DoCmd.OpenQuery "Requête1"
    . . .
    2)- Changer le nom du champ [sommeDeMontant] de la table [T_Export] par la concaténation de 01 & champ_mois & champ_annee

    Renommer un champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    . . .
    If RenommerChamp(oDb, "T_Export", "sommedeMontants", "01/" & Me.champ_mois & "/" & Me.champ_annee) Then
    . . .
    3)- Exporter vers fichier Excel à partir table [T_Export]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    . . .
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T_Export", "h:/fichier.xls"
    . . .
    ..... solution qui fonctionne ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2013, 16h01
  2. Réponses: 1
    Dernier message: 10/04/2008, 17h53
  3. VBA-EXCEL- appelr un fichier excel a l'aide d'une variable
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/08/2006, 16h58
  4. Réponses: 2
    Dernier message: 18/03/2006, 15h54
  5. VBA Excel : Appel d'un userform à l'aide d'une variable
    Par pierrot657 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/06/2005, 00h08

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