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 :

Requete select en VBA


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    J'ai un problème d'affichage de cette requête sans aucune erreur de code afficher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande187_Click()
    Dim dbs As Database
    Dim rs As Recordset
    Dim strSQL As String
    Set dbs = CurrentDb()
    strSQL = "SELECT Livraison.[Order_No], Livraison.[Label], Livraison.[Product Code], Odette_Piked.[Odette Product Code] FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.[Label] = Livraison.[Label];"
    Set rs = dbs.OpenRecordset(strSQL)
    End Sub
    Les tables sont:

    Livraison : avec champ Order_No,Label,Product Code
    Odette_Piked: Odette Product Code
    les deux son lié a le champ : Label qui est le clé primer dans les deux tables.

    la Requête en mode création est bien fonctionner, mais sur ce code non.

    J'ai besoin d'annuler la requête créé en mode création et la remplacé par une avec se code.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    • Tu sais que Set rs = dbs.OpenRecordset(strSQL) n'affiche pas les données, n'est-ce pas ? Il se contente d'y accéder pour les rendre disponible au VBA.
    • Pour afficher le résultat d'une requête, il faut faire call DoCmd.OpenQuery("ici ton SQL") et que là elle est simplement affichée et qu'on ne peut pas utiliser les données avec du code.
    • Enfin pour changer le SQL d'une requête existante il faut faire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      dim db as dao.database: set db=currentdb
      dim q as dao.querydef: set q=db.querydefs("NomTaRequete")
      q.sql="Ici ton SQL"
      set q=nothing
      db.close:set db=nothing


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    Je pense que j'ai mal expliqué ma demande.

    Ce que j'ai besoin de faire est de éliminé ma requête crée par mode de création, et la remplacer avec ce lui que j'ai déjà annoncer dans la première question(Code).

    Donc comment j'ai peut intégrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call DoCmd.OpenQuery("ici ton SQL")
    merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Donc, si j'ai bien compris, ce dont tu as besoin c'est de remplacer le SQL.

    Ici du code qui fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim db as dao.database: set db=currentdb
    dim q as dao.querydef: set q=db.querydefs("NomTaRequete")
    q.sql="Ici ton nouveau SQL"
    set q=nothing
    db.close:set db=nothing
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Non ce n'est pas juste remplacer le SQL, mais j'ai besoin de crée une requête juste apprêt clique sur un butons, pour la requête déjà créé avec la méthode Mode de création j'ai besoin de la éliminer totalement de ma base.
    Merci encore.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Puisque tu as une requête existante, supprimer une requête et en créer une nouvelle revient à remplacer le SQL de la requête qui est déjà là avec un nouveau SQL.

    Si tu tiens vraiment à supprimer puis recréer une requête, voici le code qui fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim db as dao.database: set db=currentdb
    db.QueryDefs.Delete "NomTaRequete")
    db.CreateQueryDef("NomTaNouvelleRequete", "ici ton SQL")
    db.close:set db=nothing
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Je pense que il a une erreur dans le code:

    Nom : 2017-10-26.png
Affichages : 183
Taille : 19,6 KoNom : 2017-10-26 (1).png
Affichages : 180
Taille : 9,9 Ko

    J'ai essaye par l'élimination de "s" a "db.QueryDef(s)" mais j'ai avoir une autre erreur message:

    Nom : 2017-10-26 (2).png
Affichages : 196
Taille : 43,1 Ko

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Non c'est probablement parce que ta requête n'existe plus.
    C'est un des avantages de la méthode par remplacement de SQL, pas besoin de tester si la requête existe.

    Pour tester si une requête existe :

    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
    public function RequeteExiste(prmNomrequete as string) as boolean
       dim result as boolean:result=false
       dim db as dao.database: set db=currentdb
       dim q as dao.querydef
     
       for each q in db.qerydefs
     
          if q.name=prmNomRequete then
             result=true
             exit for
          end if
     
       next q
     
       db.close:set db=nothing
       RequeteExiste=result
    end function
    Accessoirement créer une requête qui existe déjà va aussi générer une erreur.

    Donc ton code devrait probablement être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim db as dao.database: set db=currentdb
     
    if RequeteExiste("NomTaRequete") then
       db.QueryDefs.Delete "NomTaRequete")
    end if
     
    if RequeteExiste("NomTaNouvelleRequete") then
       db.QueryDefs.Delete "NomTaNouvelleRequete")
    end if
     
    db.CreateQueryDef("NomTaNouvelleRequete", "ici ton SQL")
    db.close:set db=nothing
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    C'est bien fonctionné.
    J'ai essaye d'ajouter un champ sur la requête avec le générateur comme : Statu: VraiFaux(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]);"CORRECT";"FAUTE")
    avec un critère de filtre "FAUTE"

    Nom : 2017-10-26 (3).png
Affichages : 195
Taille : 12,6 Ko

    Mais sur le code il ne fonction pas, y a till une autre méthode?


    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
    Private Sub Commande188_Click()
    Dim db As DAO.Database: Set db = CurrentDb
     If RequeteExiste("qryS_COLLAGE1") Then
       db.QueryDefs.Delete ("qryS_COLLAGE1")
    End If
    If RequeteExiste("qryS_COLLAGE") Then
       db.QueryDefs.Delete ("qryS_COLLAGE")
    End If
    db.CreateQueryDef ("qryS_COLLAGE"), "SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code]," & _
    "& IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),(CORRECT),(FAUTE) AS Statu " & _
    "FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label " & _
    "WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),(CORRECT),(FAUTE))=(FAUTE)));"
    db.Close: Set db = Nothing
    DoCmd.OpenQuery "qryS_COLLAGE"
    End Sub

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pourquoi avoir remplacé les " par des parenthèse ?

    La syntaxe devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    db.CreateQueryDef ("qryS_COLLAGE"), "SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code]," & _
    "& IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]), ""CORRECT"", ""FAUTE"" AS Statu " & _
    "FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label " & _
    "WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE"")=""FAUTE""));"
    Quand on veut utiliser un guillemet dans une chaîne de caractères, il faut le doubler.
    Là Access cherchait des champs nommés CORRECT ou FAUTE.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    le même problèmeNom : 2017-10-27.png
Affichages : 161
Taille : 24,8 Ko:

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Peux-tu poster le SQL tel que généré par Access dans l'éditeur (pas celui qui est actuellement dans le code).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    le voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code], IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),"CORRECT","FAUTE") AS Statu
    FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label
    WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),"CORRECT","FAUTE"))="FAUTE"));

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OK, essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim sql as string
     
    sql="SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code], IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE"") AS Statu"
    sql = " FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label"
    sql = " WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE""))=""FAUTE""));"
     
    call db.CreateQueryDef ("qryS_COLLAGE", sql)
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    Bonjour,

    Il ne fonction pas :

    Nom : 2017-10-27 (2).png
Affichages : 175
Taille : 20,6 Ko

    le code complet:

    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
    Private Sub Commande188_Click()
    Dim db As DAO.Database: Set db = CurrentDb
     If RequeteExiste("qryS_COLLAGE1") Then
       db.QueryDefs.Delete ("qryS_COLLAGE1")
    End If
    If RequeteExiste("qryS_COLLAGE") Then
       db.QueryDefs.Delete ("qryS_COLLAGE")
    End If
    Dim sql As String
     
    sql = "SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code], IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE"") AS Statu"
    sql = " FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label"
    sql = " WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE""))=""FAUTE""));"
     
    db.CreateQueryDef ("qryS_COLLAGE"), (sql)
    db.Close: Set db = Nothing
    DoCmd.OpenQuery "qryS_COLLAGE"
    End Sub
    Nom : 2017-10-27 (3).png
Affichages : 187
Taille : 29,4 Ko

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    oops

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim sql as string
     
    sql="SELECT Livraison.Order_No, Livraison.Label, Livraison.[Product Code], Odette_Piked.[Odette Product Code], IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE"") AS Statu"
    sql = sql &  " FROM Odette_Piked RIGHT JOIN Livraison ON Odette_Piked.Label = Livraison.Label"
    sql = sql &  " WHERE (((IIf(([Livraison]![Product Code])=([Odette_Piked]![Odette Product Code]),""CORRECT"",""FAUTE""))=""FAUTE""));"
     
    call db.CreateQueryDef ("qryS_COLLAGE", sql)
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 53
    Points : 21
    Points
    21
    Par défaut Requete select en VBA
    c'est bien fonctionner,

    merci

    Nom : 2017-10-27 (4).png
Affichages : 147
Taille : 7,1 Ko



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

Discussions similaires

  1. jointure de deux requetes update et select sous vba access
    Par nadia123456 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/09/2008, 08h15
  2. Resultat d'une requete selection en vba
    Par Nicko29 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/11/2007, 20h23
  3. requete sql en vba avec un select MAX
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2007, 15h59
  4. ouvrir une requete selection en VBA
    Par milielf dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/08/2006, 17h50
  5. Requete select en VBA
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 26/05/2006, 18h52

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