|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() |
Est-il possible d'utiliser un paramètre dans le Select d'une requête FireBird?
Exemple: matable(id,date_debut,date_fin) La requête: Code sql :
|
||
|
|
00
|
|
|
#2 | |
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
Citation:
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|
|
|
01
|
|
|
#3 |
|
Membre éclairé
![]() |
J’obtiens ce message d'erreur en exécutant cette requête dans IBExpert:
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements. Dynamic SQL Error. expression evaluation not supported je précise que l'erreur vient de la ligne Code :
SUM(:autre_date - date_debut) AS "durée_personnalisée" ça m'étonne que l'utilisation de :autre_date soit possible dans le SELECT. Comment remédier à cette situation ? |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
il faut soit utiliser un PS,
soit dans ibexpert, utiliser les Blocks |
|
|
10
|
|
|
#5 |
|
Membre éclairé
![]() |
|
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Je ne connais pas Firebird mais je pense qu'en SQL normalisé ça devrait donner quelque chose de ce genre pour le premier jour du mois :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
10
|
|
|
#7 | |||
|
Membre éclairé
![]() |
Citation:
il ne me reste que trouver une solution pour le dernier jour du mois vu qu'il peut prendre différentes valeurs (28,29,30,31) ! |
|||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() |
je peux avoir le dernier jours du mois grâce à une fonction sous l'environnement de développement que j'utilise, mais pour la passer en paramètre dans ma requête ça coince.
|
|
|
00
|
|
|
#9 |
![]() ![]() |
Le dernier jour du mois, c'est le premier jour du mois suivant moins un jour !
Code :
CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' || EXTRACT(MONTH FROM CURRENT_DATE) +1 || '-01' AS DATE) - INTERVAL 1 DAY
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#10 | |
|
Membre éclairé
![]() |
Citation:
|
|
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() |
après quelques modifications :
Code sql :
dateadd(day,-1,CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' || EXTRACT(MONTH FROM dateadd(month,1,current_date)) || '-01' AS DATE)) on obtient bien le dernier jours du mois. Merci CinePhil. |
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() |
Le calcul du premier et du dernier jour du mois est résolu, mais seulement pour la date en cours (Current_date).
Dans mon cas j'ai besoin que la date soit dynamique (paramétrable). En procédant comme suit, le SGBD génère toujours une erreur : Code SQL :
dateadd(day,-1,CAST(EXTRACT(YEAR FROM :Autre_date) || '-' || EXTRACT(MONTH FROM dateadd(month,1,:Autre_date)) || '-01' AS DATE)) Donc le problème de paramètre dans le SELECT de ma requête SQL se pose toujours. Y a-t-il une Solution ? |
|
|
00
|
|
|
#13 |
![]() ![]() |
Si tu fais tout en SQL, il faut créer une fonction qui va prendre en paramètre d'entrée la date que tu souhaites.
Si tu lances la requête SQL à l'aide d'un langage externe, celui du logiciel qui utilise la base de données par exemple, il faut créer ta requête dynamique dans ce langage et envoyer la requête paramétrée au SGBD via ce même langage.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#14 | |||||
|
Membre éclairé
![]() |
Citation:
Par exemple si je lance la requête suivante: Code SQL :
Mais si le paramétrage s'effectue au niveau de SELECT comme : Code SQL :
Donc ce que je vous demande c'est qu'elles sont les alternatives possibles ? |
|||||
|
|
00
|
|
|
#15 |
![]() ![]() |
Adresse toi au forum Delphi car je suppose que, comme pour PHP et Java, il y a une manière de passer une requête au SGBD depuis Delphi. Et si la première requête fonctionne mais pas la seconde, c'est un problème Delphi, pas SQL.
Il est clair que la requête avec le nom du paramètre ne peut pas fonctionner directement dans le SGBD ; il faut que Delphi transforme ce paramètre en valeur avant d'envoyer la requête. Et puisqu'il s'agit d'une date, il faut que cette date soit formatée d'une manière compréhensible par le SGBD. Le format standard SQL pour les dates est 'aaaa-mm-jj'.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#16 |
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|
|
01
|
|
|
#17 |
|
Membre éclairé
![]() |
|
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
Je voudrais bien savoir comment et avec quels composants ?
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|
|
00
|
|
|
#19 | ||
|
Membre éclairé
![]() |
Là nous allons sortir un peut des SGBD.
Supposons qu'on utilise un TDateTimePicker pour obtenir la date voulu, et que notre (:autre_date) aura la valeur 1 jours du mois. Code Delphi :
Si c'est possible détaillez nous la solution de la procédure stockée (ça ne devrait pas être long). |
||
|
|
00
|
|
|
#20 | |||||
|
Membre éclairé
![]() Développeur informatique Inscription : octobre 2006 Messages : 435 ![]() |
Comme tu cherchais une requête paramétrée, j'ai répondu dans le cadre de cette question.
Citation:
Code :
Code :
__________________
Si vous êtes libre, choisissez le Logiciel Libre. |
|||||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com