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

Firebird Discussion :

Paramètre dans la partie select de la requête


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut Paramètre dans la partie select de la requête
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id,
    SUM(date_fin - date_debut) as "durée",
    SUM(:autre_date - date_debut) as "durée personnalisée"
    FROM matable
    GROUP BY id;
    tels que autre_date prend la valeur 1er jour du mois ou bien celle du dernier jours du mois.

  2. #2
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Citation Envoyé par adelneo Voir le message
    Est-il possible d'utiliser un paramètre dans le Select d'une requête FireBird?
    EXP:
    matable(id,date_debut,date_fin)

    La requête:
    SELECT id,
    SUM(date_fin - date_debut) as "durée",
    SUM(:autre_date - date_debut) as "durée personnalisée"
    FROM matable
    GROUP BY id;

    tels que autre_date prend la valeur 1er jour du mois ou bien celle du dernier jours du mois.
    Oui, c'est possible.

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(:autre_date - date_debut) as "durée_personnalisée"
    en changeant le :autre_date par currentdate par exemple ça marche trés bien.
    ça m'étonne que l'utilisation de :autre_date soit possible dans le SELECT.
    Comment remédier à cette situation ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    il faut soit utiliser un PS,
    soit dans ibexpert, utiliser les Blocks

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    il faut soit utiliser un PS,
    soit dans ibexpert, utiliser les Blocks
    Veuillez me donner plus de détail svp.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id,
      SUM(date_fin - date_debut) AS "durée",
      SUM(CAST(EXTRACT(YEAR FROM CURRENT_DATE) || '-' || EXTRACT(MONTH FROM CURRENT_DATE) || '-01' AS DATE) - date_debut) AS "durée personnalisée"
    FROM matable
    GROUP BY id;
    La double barre verticale est l'opérateur SQL normalisé pour la concaténation des chaînes de caractères mais par exemple chez MySQL il faut utiliser CONCAT à la place.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  7. #7
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    Oui, c'est possible.
    Avec une procédure stockée seulement.

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    Avec une procédure stockée seulement.
    C'est possible sans utiliser une procédure stockée. En lançant la requête par le langage de programmation, j’arrive à paramétrer mes requêtes et comme je veux.
    Je remercie tout le monde.

  9. #9
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Citation Envoyé par adelneo Voir le message
    C'est possible sans utiliser une procédure stockée. En lançant la requête par le langage de programmation, j’arrive à paramétrer mes requêtes en comme je veux.
    Je voudrais bien savoir comment et avec quels composants ?

  10. #10
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    Je voudrais bien savoir comment et avec quels composants ?
    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 : 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
    procedure TForm1.DateTimePicker1Change(Sender: TObject);
    var
    y,m,d:integer;
    begin
    decodedate(datetimepicker1.date,y,m,d);
    with Query do
    begin
    close;
    sql.clear;
    sql.add('SELECT id,');
    sql.add('SUM(date_fin - date_debut) AS "durée"');
    sql.add('SUM(CAST('+inttostr(y)+'|| ''-'' || '+inttostr(m)+' || ''-01'' AS DATE) - date_debut) AS "durée_personnalisée"');
    sql.add('FROM matable');
    sql.add('GROUP BY id'); 
    open;
    end;
    end;

    Si c'est possible détaillez nous la solution de la procédure stockée (ça ne devrait pas être long).

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

Discussions similaires

  1. Passage de paramètre dans un requête Mysql
    Par kcizth dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/02/2006, 15h28
  2. Paramètres dans une requête
    Par christellel198 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/10/2005, 14h49
  3. Sous-requête dans la clause Select
    Par Danger dans le forum WinDev
    Réponses: 2
    Dernier message: 24/05/2005, 18h33
  4. Réponses: 7
    Dernier message: 18/05/2005, 16h09
  5. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 13h46

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