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 le code SQL d'une requête


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut modifier le code SQL d'une requête
    Bonsoir

    Comment suprimer en VBA le critère "Est Pas Null' pour un champ d'une requête

    Voilà ce que j'ai testé mais çà marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Modification_DblClick(Cancel As Integer)
    Dim strSQL As String
    strSQL = Replace("Requête Contrats", "WHERE (((Contacts.DateContrat) Is Not Null));", "")
    CurrentDb.QueryDefs("Requête Contrats").SQL = strSQL
    End Sub

    Et comment créer en VBA le critère "Est Pas Null' pour le même champ de cette même requête

    Voilà ce que j'ai testé mais çà marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "WHERE (((Contrats.DateContrat) Is Not Null));", -1
    Pourriez-vous m'aider à corriger svp, merci d'avance

  2. #2
    Membre expérimenté Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Par défaut
    Bonjour,

    Il me semble que ta fonction replace est male écrite. Teste le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim qdfsource As QueryDef
    Dim qdfBR As QueryDef
     
    Set qdfsource = CurrentDb.QueryDefs("Requête Contrats")
     
    'nomreqcible correspond au nom de la requete à créer
    Set qdfBR = CurrentDb.CreateQueryDef(nomreqcible, Replace(qdfsource.SQL, "WHERE (((Contacts.DateContrat) Is Not Null))",""))
     
    Set qdfsource = Nothing
    Set qdfBR = Nothing
    Juste un petit truc très utile pour débugger tes applications, utilise régulièrement dans ton code des MsgBox pour contrôler les valeurs de tes variables. Exemple si tu avais placé un msgbox strsql tu aurais obtenu "Requête Contrats" au lieu d'une chaine sql.

    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour.

    Merci pour ta réponse.

    J'ai exploré une autre piste en appliquant un filtre sur activation d'un formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.OpenForm "Formulaire Contrats", acNormal, , "RéfContrat>0"
    End Sub
    Jusque là ça tourne.

    Sur ce formulaire, un contrôle filtre tous les champs RéfContact vide sur clic.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Filtre_Click()   
    DoCmd.ShowAllRecords
    DoCmd.ApplyFilter , "RéfContrat=0"
    RéfContrat.SetFocus
    End Sub
    Et là le filtre n'est pas appliqué ???

    Peux-tu m'apporter une réponse à +

  4. #4
    Membre expérimenté Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Par défaut
    bonjour,

    Quand tu dis :

    Et là le filtre n'est pas appliqué
    Cela signifie-t-il que rien ne se passe ou que aucun enregistrement aparraît?

    si aucun enregistrement n'aparraît c'est peu etre parce que "vide" est different de "=0"

    Cordialement

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonsoir.

    Cela signifie-t-il que rien ne se passe ou que aucun enregistrement aparraît?

    si aucun enregistrement n'aparraît c'est peu etre parce que "vide" est different de "=0"
    Effectivement aucun enregistrement n'aparraît, alors comment passer le paramêtre = "vide", par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.ApplyFilter , "RéfContrat= """
    Je l'ais tester çà fonctionne pas, @ +.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Re bonsoir

    J'ai testé ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.ApplyFilter "[Contacts].[RéfContrat] = 0"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.ApplyFilter "[Contacts].[RéfContrat]"
    Dans les 2 cas les champs sont filtrés comme suis:
    en premier les champs vides et ensuite les champs contenant une valeur > à 0.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 830
    Par défaut
    Bonjour.

    Après avoir testé plusieures possibilités, j'ai réussi a filtrer tous les enregistrements "RéfContrat" vides en utilisant la fonction "Filtrer par formulaire" dans le menu "Enregistrements" => "Filtre", explication dans le fichier PDF ci-joint.

    Mais comment faire la même chose en vba ???

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2013, 00h15
  2. Modifier propriété <source base> d'une requête par VBA ou SQL?
    Par 1010titi dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 26/11/2008, 21h16
  3. [ACCESS] Affichage du code SQL d'une requête
    Par cyrille_ dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/07/2008, 20h22
  4. Réponses: 2
    Dernier message: 05/07/2007, 21h11
  5. Affecter résultat SQL d'une requête à une variable
    Par bozolozo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/01/2005, 17h37

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