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 :

Requête paramètrer sur table SQL Server 2000


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Requête paramètrer sur table SQL Server 2000
    Salut à tous.
    Voilà mon problème :
    Table sous SQL Server 2000.
    Voici ma requête
    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
    SELECT     
     CASE 
      WHEN (MONTH(DO_Date) BETWEEN 1 AND 3) THEN '2em' 
      WHEN (MONTH(DO_Date) BETWEEN 4 AND 6) THEN '3em' 
      WHEN (MONTH(DO_Date) BETWEEN 7 AND 9)   THEN '4em' 
      WHEN (MONTH(DO_Date) BETWEEN 10 AND 12) THEN '1er' 
     END AS TRIMESTRE, 
     CASE 
      WHEN MONTH(DO_Date) > 9 THEN (YEAR(DO_Date) + 1) 
      ELSE (YEAR(Do_Date)) 
     END AS EXERCICE,
     F_COMPTET.CT_Intitule AS FOURNISSEUR, 
     F_DOCLIGNE.DO_Piece AS DOC_NUM, 
                    F_DOCLIGNE.DO_Date AS DOC_DATE, 
     F_DOCLIGNE.DO_Ref AS DOC_REF, 
     F_DOCLIGNE.AR_Ref AS ARTICLE, 
                    F_ARTICLE.FA_CodeFamille AS FAMILLE, 
     F_DOCLIGNE.DL_Design AS DESIGNATION, 
     F_DOCLIGNE.DL_Qte AS QTE, 
                    F_DOCLIGNE.DL_PrixUnitaire AS PU, 
     F_DOCLIGNE.DL_Qte * F_DOCLIGNE.DL_PrixUnitaire AS MONTANT
    FROM      F_DOCLIGNE 
     INNER JOIN F_COMPTET ON F_DOCLIGNE.CT_Num = F_COMPTET.CT_Num 
     INNER JOIN F_ARTICLE ON F_DOCLIGNE.AR_Ref = F_ARTICLE.AR_Ref
    WHERE  (F_DOCLIGNE.DO_Domaine = 1) AND 
     (F_DOCLIGNE.DO_Type IN (15, 16, 17)) AND
     (EXERCICE = :PEXERCICE)
    Le problème :
    il ne semble pas connaitre le champs EXERCICE.
    Or je n'ai droit qu'en lecture sur la table (pas d'utilisation de Vue).

    Quelle solution utilisée car je dois selectionner juste l'exercice voulue.

    Merci
    On progresse .....

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu ne peux pas normalement utiliser un alias dans la zone where d'une requete.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     CASE 
      WHEN MONTH(DO_Date) > 9 THEN (YEAR(DO_Date) + 1) 
      ELSE (YEAR(Do_Date)) 
     END AS EXERCICE,

    et

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AND
     (EXERCICE = :PEXERCICE)

    C'est incompatible.

    Il te faut passer par le champ DO_Date pour avoir ton exercice.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    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

    Effectivement il faut travailler sur la date DO_DATE.

    remplace ta condition
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE 
      (EXERCICE = :PEXERCICE)

    par

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE
      (DO_DATE >= :P_DO_DATE)

    Si tu veux l'exercice 2007, tu lui transmets le 1° Sept. 2006.
    Ce doit être facilement gérable.

    @+ Claudius

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Ok.
    Je voulais juste avoir cette confirmation.
    Je vais encoder la date de debut et de fin de l'exercice et changer le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AND
     (EXERCICE = :PEXERCICE)
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (DO_DATE BETWEEN :PSTARTDATE AND :PENDATE)
    Merci Malatar
    On progresse .....

  5. #5
    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 Andry
    Je vais encoder la date de debut et de fin de l'exercice et changer le paramètre
    Tu es arrivé à la même conclusion que moi.

    [Edit] Avec un Between qui est encore mieux. [/Edit]

    @+

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

Discussions similaires

  1. Questions sur Microsoft SQL Server 2000
    Par Nyny93 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/11/2007, 00h12
  2. QUEL PORT POUR ACCES A DISANCE SUR DB SQL SERVER 2000 ?
    Par titanserver dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/08/2007, 15h52
  3. Requête sur Vue SQL Server 2000 PLANTE aléatoirement
    Par StarMusic dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 10h22
  4. Recettage sur MS SQL Server 2000
    Par poosh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 28/08/2006, 15h54
  5. Requêtes analyses croisées sous SQL Server 2000
    Par callo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/09/2005, 19h27

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