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

Access Discussion :

Paramètre pour spécifier un nom de table (ou un nom de champ)


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Paramètre pour spécifier un nom de table (ou un nom de champ)
    Bonjour à tous,


    J'ai un petit problème, que les différents tutoriaux proches du sujet ne m'ont pas permis de résoudre.

    J'utilise Access 2003.
    J'utilise des champs de plusieurs tables puis je fais des calculs statistiques dessus.


    Ces tables sont des historiques de cours de produits, que j'importe (elles sont au format cvs) et de la forme suivante:
    - Clé
    - Date
    - Cours


    Je lie ces tables (manuellement) à l'aide de leur clé (elles ont des clés parfaitement identiques pour tous les cours jour après jour)

    J'ai besoin de faire des calculs statistiques sur les cours de plusieurs de ces produits, puis de comparer ces données de sortie par la suite.


    Mes requêtes de calculs entre deux tables fonctionnent, mais je n'arrive pas à mettre le nom des tables en tant que "paramètre" entré par l'utilisateur.

    Or, pouvoir mettre un nom de table en tant que paramètre m'éviter de faire 20 requêtes similaires pour comparer mes 20 tables de cours à une table "référence".


    Mon problème se pose aussi au niveau du paramétrage des champs (j'aimerais également que l'utilisateur puisse entre le "champ" lui-même lors de l'exécution de la requête).
    J'imagine néanmoins qu'il faut utiliser la même technique.


    Plus précisément, j'essayais de faire une requête de cette forme pour faire un calcul de variation de cours (merci encore à Random pour l'intérieur du code).

    <code>
    PARAMETERS MaTable1 Text ( 255 );
    SELECT a.Numéro, b.Numéro, (a.close/b.close)-1 AS delta
    FROM MaTable1 AS a, MaTable1 AS b
    WHERE (((b.Numéro)=[a].[numéro]-1));
    </code>

    Malheureusement, Access me dit que "MaTable1" n'est pas un nom de table et ne me laisse donc pas spécifier ce nom, et j'avoue ne pas bien comprendre comment aller dans le menu "requête/paramètre" pour changer quelque chose (cf tutorial), car ce menu est grisé chez moi (donc non-cliquable).


    Quelqu'un aurait-il une solution?
    Merci d'avance pour votre aide.

    Laurent

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Rebonjour à tous.

    Après quelques heures de recherches supplémentaires, j'ai pu vérifier qu'il n'est simplement pas possible d'avoir un nom de table en paramètre dns une requête SQL.
    C'est bien dommage.


    Me voilà donc contraint d'utiliser VBA pour reconstruire cette requête.
    Mon (gros) problème de débutant en VBA est donc désormais celui-ci : quel est le code VBA à utiliser pour me permettre de faire ce que j'ai expliqué dans le post précédent?
    (j'imagine une très simple "box" demandant à l'utilisateur d'entrer le nom de la table à utiliser)


    Je me renseignerai par ailleurs sur le code à ajouter pour éviter que l'utilisateur qui entre le nom de la table ne puisse faire des "erreurs" de frappe (nombre au lieu du texte, mauvaise orthographe, etc.).
    >> Un code "simple" en VBA qui recréerait la requête SQL donnée plus haut avec une simple "box" me conviendrait tout à fait.

    Vivement que je ne sois plus débutant en VBA...

    Merci d'avance pour votre aide.

    Laurent

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il suffit de mettre le nom de la table dans une variable.

    ensuite le SQL n'est qu'une chaine de caractères (String).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim strSQL As String
    Dim strNomTable As String
    
    strNomTable = Me.NomDuControleOuOnEcritLaTable
    strSQL = "SELECT champ1, champ2 FROM [" & strNomTable "] WHERE champ2 = 'toto'"
    
    CurrentDB.QueryDefs("UneRequeteExistante").SQL = strSQL
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2015, 08h27
  2. Réponses: 7
    Dernier message: 10/08/2010, 16h11
  3. [MySQL] Créer un nom de table avec comme nom :email
    Par zesavantfou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/12/2008, 19h03
  4. Réponses: 2
    Dernier message: 02/05/2007, 11h42
  5. Réponses: 2
    Dernier message: 03/02/2005, 13h21

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