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 :

Modifier une requete en VBA [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut Modifier une requete en VBA
    Bonjour,

    Sujet abordé de nombreuses fois, je cherche à modifier une requête de sélection déjà existante en VBA au clic sur un bouton.

    A la lecture de différents tutos, j'ai essayé ceci (si quelqu'un veut bien me corriger si besoin est) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Db As DAO.Database: Set Db = CurrentDb
    Dim QryModele As DAO.QueryDef: Set QryModele = Db.QueryDefs("R_RechercheRecettes")
    Dim strSQLModele As String
    strSQLModele = QryModele.SQL
    strSQLModele = strSQLModele & "...;"
    Me.RecordSource = strSQLModele
    Me.Requery
    Mon soucis c'est que je me prends un message d'erreur "caractères trouvés après la fin de la chaine". Je pense que c’est à cause des ; qui se trouvent à la fin de la requête car si je la réécris entièrement en variable au début du code sans le ; je n'ai plus ce message. Cependant je préférerais éviter de la réécrire et donc plutôt récupérer celle déjà existante.

    Comment gérer ce ; ?

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Re,



    Quand tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLModele = QryModele.SQL
    Tu as le sql terminé par son point-virgule

    et ici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLModele = strSQLModele & "...;"
    tu ajoutes encore du texte après ce point-virgule => protestation d'Accès.

    Donc, pour ne pas prendre ce point-virgule final d'origine :

    Attention : mauvaise réponse ! (Voir billet 5.)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSqlModele = left(QryModele.SQL,len(QryModele.SQL)-1)

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Re Claude, j'ai du raté quelque chose, ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Db As DAO.Database: Set Db = CurrentDb
    Dim QryModele As DAO.QueryDef: Set QryModele = Db.QueryDefs("R_RechercheRecettes")
    Dim strSQLModele As String
    strSQLModele = Left(QryModele.SQL, Len(QryModele.SQL) - 1)
    strSQLModele = strSQLModele & "...;"
    Me.RecordSource = strSQLModele
    Me.Requery
    Qu'est ce qui ne va pas ?

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bon je viens de voir pourquoi ça ne marche pas, il y a un espace après le ; à la fin de la requete , il faut donc que je supprime un caractère de plus.

    Je ne comprends pas pourquoi je ne peux pas à enlever cet espace dans le SQL, chaque fois que je le fais et que je sauvegarde, quand je réouvre le SQL il y est encore

    Sujet clos donc, merci Claude.

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Tu as raison, ce que je propose dans mon billet 2 ne fonctionne pas : il y a des caractères qui suivent le point-virgule.
    Mea culpa : je n'avais pas testé.

    Ceci fonctionnera mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLModele = Replace(QryModele.SQL, ";","") - 1)
    Cette fois, j'ai testé :


  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bonjour Claude,

    Oui il faut que je supprime 3 caractères pour que ça fonctionne. Pour le moment ça fonctionne comme ça, j'avance pas à pas dans ce que je veux faire mais j'ai vraiment du mal

    Je vais ouvrir un autre sujet sur le code que je cherche à écrire car je coince, et ensuite je crois que je vais faire une petite pause

    Merci pour ta correction.

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Oui il faut que je supprime 3 caractères
    En effet, le SQL se termine par un point-virgule (ASCII 59) suivi d'un retour chariot (ASCII 13) et à la ligne (ASCII 10).

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

Discussions similaires

  1. definir le critere d'une requete en VBA
    Par Dafbau dans le forum Access
    Réponses: 5
    Dernier message: 23/09/2006, 13h17
  2. Modifier une requete access en vba
    Par WyLLoU dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/07/2006, 08h32
  3. Comment modifie une requete pour avoir des sommes?
    Par F@ce27 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/06/2006, 13h47
  4. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 12h05
  5. Réponses: 2
    Dernier message: 24/11/2005, 11h46

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