Bonjour,
Effectivement, soit on ne s'est pas compris, soit ta réponse est fausse...
J'utilise les bases de données depuis des années (Access, mysql, firebird), et il est tout a fait possible de calculer un critère dans un select de la manière suivante :
Par exemple, une requête qui détermine en fonction de la date de naissance, si l'utilisateur est mineur ou adulte :
Select Nom, Prenom, iif(Cast('Now' as date)-DateNaissance<18, 'Mineur', 'Adulte') as StatutAge from TableUsers
Cette requête permettrait d'afficher dans un dbgrid tous les utilisateurs de la table TableUsers avec le Nom, Prenom et le StatutAge qui serait "Mineur" ou "Adulte".
La difficulté est maintenant d'utiliser la propriété filter du TSQLQuery pour filtrer sur cette requête...
Alors bien évidement, si je test en direct sur ma base de donnée et que je filtre avec un Where, je ne peux pas le faire directement sur la requête principale. Je dois faire :
Select * from (Select Nom, Prenom, iif(Cast('Now' as date)-DateNaissance<18, 'Mineur', 'Adulte') as StatutAge from TableUsers) Where StatutAge = 'Mineur'
Cette requête fonctionne en direct sur la base.
Si je l'applique dans Lazarus sans le Where donc juste avec :
Select * from (Select Nom, Prenom, iif(Cast('Now' as date)-DateNaissance<18, 'Mineur', 'Adulte') as StatutAge from TableUsers)
Le filtre sur StatutAge ne fonctionne pas.
Je pense qu'il faudrait peut être que le champ soit calculé directement depuis la base, mais je ne trouve rien là dessus. Si quelqu'un avait une piste je suis preneur.
Merci d'avance,
Partager