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 :

Requete paramétrée en VBA


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut Requete paramétrée en VBA
    Bonjour,
    J'essaie d'écrire une fonction en VBA utilisant des requetes paramétrées. Alors, j'ai lu les diverses FAQ et autres posts précédents, mais je comprends pas comment ça marche.

    Ce que j'aimerai faire, c'est écrire une fonction qui prend en arguments la valuer des paramétres dont ont besoin mes requetes. Donc, j'ai essayé d'assembler tout ça, mais ça veut pas marcher.

    Je vous joins ce que j'ai essayé d'écrire. Je vais probablement me faire taper, car je connais pas VBA, du coup c'est sans doute complétement faux.

    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
    Function Macro_Velocità1(TaVariable As String)
     
    Set qdf = CurrentDb.QueryDefs("SELECT DISTINCT FERMATE.DATA, FERMATE.VEICOLO, NOME_FASCIA_ORARIA.FASCIA_ORARIA, " & _
    "Prog.PROGRESSIVO_FERMATE , FERMATE.COD_FERMATA_P, FERMATE.FERMATA_PARTENZA, FERMATE.ORA_PARTENZA, " & _
    "FERMATE.COD_FERMATA_A, FERMATE.FERMATA_ARRIVO, FERMATE.ORA_ARRIVO, FERMATE.TEMPO_PERCORRENZA, Prog.DISTANZA " & _
    "FROM FERMATE, NOME_FASCIA_ORARIA, (SELECT PROGREZIONE.LINEA, PROGREZIONE.PROGRESSIVO_FERMATE, " & _
    "PROGREZIONE.FERM_PART, PROGREZIONE.DISTANZA FROM PROGREZIONE " & _
    "WHERE (PROGREZIONE.LINEA= [Numero_Linea])  And (PROGREZIONE.CARTEGGIO Is Null)) AS Prog " & _
    "WHERE FERMATE.COD_FERMATA_P = Prog.FERM_PART And FERMATE.ORA_PARTENZA >= NOME_FASCIA_ORARIA.NOME_FASCIA_I " & _
    "And FERMATE.ORA_PARTENZA < NOME_FASCIA_ORARIA.NOME_FASCIA_F " & _
    "ORDER BY FERMATE.DATA, FERMATE.VEICOLO, FERMATE.ORA_PARTENZA")
     
          With qdf
             .Parameters("Numero_Linea") = TaVariable
             .Execute
          End With
     
    End Function

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bonjour,

    mais ça veut pas marcher
    et c'est tout? pas plus d'infos à donner sur le problème recontré?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut
    Ben, globalement, ça marche pas quand je lance la fonction dans la fenétre "immédiat" de VB.

    J'appelle la fonction en lui donnant en argument un numéro de ligne (mon paramètre) et ça me renvoie :

    Erreur de run-time '3625' :
    Elément non trouvé dans cet ensemble (traduction de l'italien)

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    la syntaxe que tu utilises c'est pour une requête déjà crées.
    de plus une requête sélection ne s'exécute pas.
    je ne comprend vraiment pas la finalité de la fonction, elle ne renvoie rien.

    si tu veux lire des données, regarde le tuto sur DAO :
    http://warin.developpez.com/access/dao/

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Par défaut
    Merci pour le lien vers le tutorial, je l'avais pas vu celui-là, je vais me plonger dedans et voir ce que je peux faire.

    Sinon, l'idée est plus compliquée que ce que j'ai présenté içi. Je dois "automatiser" un certain nombre de requetes successives que j'effectue sur une base de données (plus deux petites autres). Le problème est que "on" ne veut pas d'une macro, car globalement il faut suivre qui se passe et accepter des créations de tables. Et je peux pas tout regrouper en une seule requete, car j'ai besoin de plusieurs copies du résultat d'une requete intermédiaire (requete qui est très longue car extrait les données à partir d'une vingtaine de bases de données sur un serveur).

    Du coup, je passe en VBA, car on peut supprimer ainsi les warnings de la macro. Le problème est que mes requetes sont paramétrées.

    Aussi, j'aimerai faire une fonction, prenant en argument la valeur des paramètres de mes différentes requetes, et qu'au bout j'obtienne une table avec les résultats de ma macro initiale.

    Bref, c'est très compliqué, surtout pour moi qui ne sait pas faire de VBA (mais ai qques notions de programmation). Je vais de ce pas me pencher sur ce tutoriel.

    Merci

  6. #6
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Par défaut
    salut ,
    je pense que le problèm est que tun n'as pas défini les parametre dans la requette
    Citation Envoyé par at_first
    Bonjour,
    J'essaie d'écrire une fonction en VBA utilisant des requetes paramétrées. Alors, j'ai lu les diverses FAQ et autres posts précédents, mais je comprends pas comment ça marche.

    Ce que j'aimerai faire, c'est écrire une fonction qui prend en arguments la valuer des paramétres dont ont besoin mes requetes. Donc, j'ai essayé d'assembler tout ça, mais ça veut pas marcher.

    Je vous joins ce que j'ai essayé d'écrire. Je vais probablement me faire taper, car je connais pas VBA, du coup c'est sans doute complétement faux.

    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
    Function Macro_Velocità1(TaVariable As String)
     
    Set qdf = CurrentDb.QueryDefs("SELECT DISTINCT FERMATE.DATA, FERMATE.VEICOLO, NOME_FASCIA_ORARIA.FASCIA_ORARIA, " & _
    "Prog.PROGRESSIVO_FERMATE , FERMATE.COD_FERMATA_P, FERMATE.FERMATA_PARTENZA, FERMATE.ORA_PARTENZA, " & _
    "FERMATE.COD_FERMATA_A, FERMATE.FERMATA_ARRIVO, FERMATE.ORA_ARRIVO, FERMATE.TEMPO_PERCORRENZA, Prog.DISTANZA " & _
    "FROM FERMATE, NOME_FASCIA_ORARIA, (SELECT PROGREZIONE.LINEA, PROGREZIONE.PROGRESSIVO_FERMATE, " & _
    "PROGREZIONE.FERM_PART, PROGREZIONE.DISTANZA FROM PROGREZIONE " & _
    "WHERE (PROGREZIONE.LINEA= [Numero_Linea])  And (PROGREZIONE.CARTEGGIO Is Null)) AS Prog " & _
    "WHERE FERMATE.COD_FERMATA_P = Prog.FERM_PART And FERMATE.ORA_PARTENZA >= NOME_FASCIA_ORARIA.NOME_FASCIA_I " & _
    "And FERMATE.ORA_PARTENZA < NOME_FASCIA_ORARIA.NOME_FASCIA_F " & _
    "ORDER BY FERMATE.DATA, FERMATE.VEICOLO, FERMATE.ORA_PARTENZA")
     
          With qdf
             .Parameters("Numero_Linea") = TaVariable
             .Execute
          End With
     
    End Function
    essaye ca j'ai supposé que Numero_Linea est un entier long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set qdf = CurrentDb.QueryDefs("Parameters Numero_Linea Long; SELECT DISTINCT FERMATE.DATA, FERMATE.VEICOLO, NOME_FASCIA_ORARIA.FASCIA_ORARIA, " & _
    "Prog.PROGRESSIVO_FERMATE , FERMATE.COD_FERMATA_P, FERMATE.FERMATA_PARTENZA, FERMATE.ORA_PARTENZA, " & _
    "FERMATE.COD_FERMATA_A, FERMATE.FERMATA_ARRIVO, FERMATE.ORA_ARRIVO, FERMATE.TEMPO_PERCORR.......

Discussions similaires

  1. renseignement d'un paramètre d'une requete via le VBA
    Par raynor911 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 13/12/2006, 14h42
  2. Requete paramètrée en VBA
    Par zebi42 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/12/2006, 22h27
  3. [VBA-A ] requete paramétrée sous access
    Par mymeal dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/08/2006, 17h54
  4. Requete paramétré sans VBA
    Par Alpha31 dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 00h41
  5. [VBA] Requete paramétrée dans formulaire
    Par Docsmea dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 12h52

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