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

Bases de données Delphi Discussion :

ADOQuery / Filtre avec sous requete


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut ADOQuery / Filtre avec sous requete
    Bonjour,

    Quand j'exécute la séquence suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          ADOQuery_GrilleCodeEngagement.Filtered:=false;
          ADOQuery_GrilleCodeEngagement.Filter := 'C_ENG in (select N.C_ENG from ref_nomencl_eng as N, ref_type_encours as E '+
                                                 'where N.C_TYPE_ENCOURS = E.C_TYPE_ENCOURS '+
                                                 'and E.I_BILAN = 1)';
     
          ADOQuery_GrilleCodeEngagement.Filtered:=true;
    J'ai l'erreur suivante :
    Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres.
    Ce genre de filtre est-il possible?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Perso je n'utilise la propriété Filter que pour des conditions extrêmement simples.
    Pour des conditions plus complexes j'utilise OnFilterRecord.

    Mais puisque ta condition est une sous-requête ne serait-il pas plus simple de reconstruire la requête elle-même?

    @+ Claudius

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Je suis dans une Dbgrid et sur un champ Lookup. Et en fonction de la valeur que je choisis dans la premiere ligne de la dbgrid, je filtre sur les valeurs disponible dans le dataset dans les lignes suivantes de la dbgrid.

    Je dois donc faire evoluer les données disponibles dans la grille en fonction de la valeur choisie dans la premiere ligne.

    Chose ardue...!

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par tomy29
    Chose ardue...!
    Wouahhh !

    Même si ça me parait bizarre comme approche, je persiste à croire que le mieux est de reconstruire ton DataSet en y incluant ta sous-requête.

    Sinon dans le OnFilterRecord tu renseignes Accept suivant que C_ENG fait parti des valeurs attendues.

    Mais ça risque d'être lourd !

    @+ Claudius

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    oui mais le dataset evolue en fonction de ce que l'on a choisit dans le Lookup de la premiere ligne de la grille.

    Exemple :
    jeu de donnée

    C_ENG | Indic
    1 | A
    2 | A
    3 | B
    Si dans la premiere ligne de la grille j'ai choisi 1 dans le lookup qui affiche les C_ENG, alors dans les lignes suivantes il doit m'afficher uniquement les C_ENg avec Indic = A

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    J'ai un doute.
    Tu veux filtrer le DataSet du DBGrid, ou bien celui du Lookup ?

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    la dbgrid est constituée de deux lookup (qui constituent le dataset) : C_ENG, et L_C_ENG (le libellé correspondant) je veux filtrer les deux lookup, donc le dataset du dbgrid...

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Voir Piece jointe.
    Le code A04 a un indicateur = 'A' (qu'on ne voit pas dans la grille). Je dois filtrer ce dataset pour que les lignes suivantes ne propose que des codes ayant un indicateur 'A'

Discussions similaires

  1. Requete Update avec sous requete et jointure
    Par javaboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/05/2007, 11h03
  2. Requete Update avec sous requete
    Par joziel dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/08/2006, 15h15
  3. problème update avec sous requetes
    Par stoz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 16h44
  4. Optimisation requete avec sous-requetes multiples
    Par gege.boubou dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h42
  5. INTERBASE: DELETE avec sous requete conditionnelle
    Par Papino dans le forum InterBase
    Réponses: 6
    Dernier message: 17/02/2005, 22h55

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