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

SQL Firebird Discussion :

Vue vers PS, problème incompréhensible !


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut Vue vers PS, problème incompréhensible !
    Salut

    ce bout de code fonctionne à merveille dans la vue mais quand je le mets dans une PS j'ai une erreur.

    voici le code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    case when
                (tb_process.nh4_sortie is null) then '/'
                else tb_process.nh4_sortie*tb_process.volume_mj_sortie/1000
            end,
    l'erreur engendrée lors de l'exécution de la PS est
    Overflow occured during data type conversion.
    conversion error from string "/".
    une idée svp ?

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Bonjour,

    Je dirais que la variable dans lequel vous renvoyez le résultat est de type numeric ou decimal ou float et donc quand le CASE renvoi le caractère '/', ca ne lui plait pas.

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Citation Envoyé par Barbibulle Voir le message
    Bonjour,

    Je dirais que la variable dans lequel vous renvoyez le résultat est de type numeric ou decimal ou float et donc quand le CASE renvoi le caractère '/', ca ne lui plait pas.
    Merci Barbibulle
    c'était ça effectivement mais pourquoi dans la requête ça passe malgré que le type de base du champ est numérique !!!

    comment puis-je le forcer dans la PS à prendre '/' quand c'est null

    merci encore

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    case when
                (tb_process.nh4_sortie IS NULL) then '/'
                else tb_process.nh4_sortie*tb_process.volume_mj_sortie/1000
            end,
    Le type renvoyé par la requete est char ou varchar, c'est pour ca que ca fonctionne.

    Si le but de cette PS c'est de faire de la présentation de résultat, utilisez un varchar(xx). Si ce résultat vous souhaitez pouvoir l'utiliser dans d'autre calcul je vous déconseille de procéder ainsi.

  5. #5
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut

    Ton paramètre de sortie étant de type DECIMAL il ne peut accepter un CHAR ("/" dans ton cas).

    Une solution: renvoie -1 au lieu de "/", et c'est au niveau de l'application que tu adaptes l'affichage des données.

    @+ Claudius

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Ton paramètre de sortie étant de type DECIMAL il ne peut accepter un CHAR ("/" dans ton cas).

    Une solution: renvoie -1 au lieu de "/", et c'est au niveau de l'application que tu adaptes l'affichage des données.

    @+ Claudius
    Salut Cl@udius, effectivement c'est ce que j'ai fais.

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut

    dans le même état d'esprit, j'ai une autre requête qui donne le résultat souhaité mais quand je l'ai convertis en PS j'ai eu une erreur de type "arithmetic overflow or division by zero has occured".

    voici mon code :
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    BEGIN
        FOR
        select 
            d.date_bilan,
            c.nom_unite,
            b.nom_step,
            d.volume_mj_sortie* d.nombre_jour_reel as Vol_Traite_Mois,
            a.energie_active,
            a.energie_reactive,
            a.pma,
            a.rap_puissance,
            a.montant_facture,
            a.energie_active / (cast(nullif(d.volume_mj_sortie,0) as integer) * d.nombre_jour_reel) as Taux_consommation
        from tb_energie a
            inner join tb_step b on (a.code_step = b.code_step)
            inner join tb_unite c on (b.code_unite = c.code_unite)
            inner join tb_process d on (b.code_step = d.code_step)
     
        where 
            (
                (a.date_mois =:DATE_BILAN_SAISIE and d.date_bilan =:DATE_BILAN_SAISIE )
            )
     
        into
            :DATE_BILAN,
            :NOM_UNITE,
            :NOM_STEP,
            :VOLUME_TRAITE_MOIS,
            :ENERGIE_ACTIVE,
            :ENERGIE_REACTIVE,
            :PMA,
            :RAP_PUISSANCE,
            :MONTANT_FACTURE,
            :TAUX_CONSOMMATION
    DO
      BEGIN
        suspend;
      END
    END

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/08/2012, 10h05
  2. Problème incompréhensible! Fichier + liste
    Par djsbens dans le forum C
    Réponses: 2
    Dernier message: 07/12/2005, 00h30
  3. Réponses: 1
    Dernier message: 01/11/2005, 12h04
  4. Problème incompréhensible
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2005, 11h49
  5. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06

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