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

Requêtes et SQL. Discussion :

Ajouter une nouvelle condition VraiFaux à une requète existante


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut Ajouter une nouvelle condition VraiFaux à une requète existante
    Bonjour, j'ai une requête existante qui comporte 2 conditions VraiFaux et qui fonctionne parfaitement ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NB_JOURS_STOCK_Test: VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])<=Année(Maintenant())
     Et Mois([STK_DENT])<>Mois(Maintenant()));Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0));
     VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT])=Mois(Maintenant()));
     DiffDate("j";[STK_DENT];#31/10/2018#);DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])))
    Je souhaite y ajouter une nouvelle condition mais cela me retourne une erreur de syntaxe :

    Nom : Capture1.PNG
Affichages : 188
Taille : 9,3 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     NB_JOURS_STOCK_Test3: VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])<=Année(Maintenant())
     Et Mois([STK_DENT])<>Mois(Maintenant()));Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0));
     
     VraiFaux(Est Pas Null([STK_OUTDATE]) Et (Année([STK_DENT])=Année(Maintenant())
     Et Mois([STK_DENT])=Mois(Maintenant()));DiffDate("j";[STK_DENT];[STK_OUTDATE]);Mois(#01/10/2018#)+1;+0));
     
     VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT])=Mois(Maintenant()));
     DiffDate("j";[STK_DENT];#31/10/2018#);DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])))
    Merci de votre aide

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 316
    Par défaut
    Salut
    Si pour Null la syntaxe est EstNull([champ]), pour Pas Null la syntaxe est [champ] Est Pas Null.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NB_JOURS_STOCK_Test3:VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) <= Année(Maintenant()) Et Mois([STK_DENT]) <> Mois(Maintenant()));Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0));VraiFaux([STK_OUTDATE] Est Pas Null Et (Année([STK_DENT]) = Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant()));DiffDate("j";[STK_DENT];[STK_OUTDATE]);Mois(#01/10/2018#)+1;+0));VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) = Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant()));DiffDate("j";[STK_DENT];#31/10/2018#);DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])))

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut
    Merci de votre réponse mais ce code retourne une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NB_JOURS_STOCK_Test3:VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) <= Année(Maintenant())
     Et Mois([STK_DENT]) <> Mois(Maintenant()));Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0));
     VraiFaux([STK_OUTDATE] Est Pas Null Et (Année([STK_DENT]) = Année(Maintenant())
      Et Mois([STK_DENT]) = Mois(Maintenant()));DiffDate("j";[STK_DENT];[STK_OUTDATE]);Mois(#01/10/2018#)+1;+0));
      VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) = Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant()));
      DiffDate("j";[STK_DENT];#31/10/2018#);DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])))

    Nom : Capture1.PNG
Affichages : 161
Taille : 6,1 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut
    J'ai isolé et réécrit le code que je souhaite rajouté et la ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VraiFaux(Année([STK_OUTDATE])=Année(Maintenant()) Et Mois([STK_OUTDATE])=Mois(Maintenant())
     Et Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT])=Mois(Maintenant());DiffDate("j";[STK_DENT];[STK_OUTDATE]);0)
    Par contre si je l'insère avec le reste du code j'obtient une erreur ! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NB_JOURS_STOCK_Test: VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])<=Année(Maintenant())
     Et Mois([STK_DENT])<>Mois(Maintenant()));Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0));
     
     VraiFaux(Année([STK_OUTDATE])=Année(Maintenant()) Et Mois([STK_OUTDATE])=Mois(Maintenant())
     Et Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT])=Mois(Maintenant());DiffDate("j";[STK_DENT];[STK_OUTDATE]);0)
     
     
     VraiFaux(EstNull([STK_OUTDATE]) Et (Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT])=Mois(Maintenant()));
     DiffDate("j";[STK_DENT];#31/10/2018#);DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])))
    Nom : Capture1.PNG
Affichages : 152
Taille : 6,7 Ko

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut
    Pardon j'ai oublié le point virgule apres


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DiffDate("j";[STK_DENT];[STK_OUTDATE]);0)
    mais cela ne change rien au résultat :

    Nom : Capture1.PNG
Affichages : 159
Taille : 5,0 Ko

  6. #6
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 316
    Par défaut
    euh ...
    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
    VraiFaux(
    EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) <= Année(Maintenant()) Et Mois([STK_DENT]) <> Mois(Maintenant()))
    ;
    Jour(SérieDate(Année(#01/10/2018#);Mois(#01/10/2018#)+1;+0))
    ;
    VraiFaux(
    Année([STK_OUTDATE]) = Année(Maintenant()) Et Mois([STK_OUTDATE]) = Mois(Maintenant()) Et Année([STK_DENT])=Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant())
    ;
    DiffDate("j";[STK_DENT];[STK_OUTDATE])
    ;
    VraiFaux(
    EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) = Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant()))
    ;
    DiffDate("j";[STK_DENT];#31/10/2018#)
    ;
    DiffDate("j";"01/" & Mois([STK_OUTDATE]) & "/" & Année([STK_OUTDATE]);[STK_OUTDATE])
    )
    )
    )
    Votre req est du style SI ... ALORS ... SINON SI ... ALORS ... SINON SI ... ALORS ... SINON ... FINSI FINSI FINSI
    Si en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L9 DiffDate("j";[STK_DENT];[STK_OUTDATE]);0)
    votre req devient SI ... ALORS ... SINON SI ... ALORS ... SINON ... FINSI FINSI

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 150
    Par défaut
    Merci pour ce code qui fonctionne. Mais il y a un des paramètre VraiFaux qui ne s'applique pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VraiFaux(
    EstNull([STK_OUTDATE]) Et (Année([STK_DENT]) = Année(Maintenant()) Et Mois([STK_DENT]) = Mois(Maintenant()))
    ;
    DiffDate("j";[STK_DENT];#31/10/2018#)
    ;
    Nom : Capture1.PNG
Affichages : 158
Taille : 11,7 Ko

    Dans cet capture , Expr2 devrait renvoyer 20 et non 31.

  8. #8
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 316
    Par défaut
    Re,
    - Post#7 avec la formule VraiFaux, j'obtiens bien 20 à condition que l'horloge du PC soit encore au mois d'octobre.
    - Pourquoi écrire en dur des dates comme 01/10/2018 et/ou 31/10/2018 ?

    Si je comprends bien :
    - STK_DENT doit toujours être renseigné
    - STK_OUTDATE est vide jusqu'à ce qu'il soit renseigné
    - vous cherchez toujours à vérifier la date renseignée dans STK_DENT par rapport à un instant T ((Maintenant() = horloge système de votre PC)
    - l'instant T est forcément et toujours soit égal à STK_DENT ou plus grand que STK_DENT
    - tant que STK_OUTDATE n'est pas renseigné, vous calculez le nb jour par rapport à STK_DENT
    - mais si STK_OUTDATE est renseigné, vous calculez le nb jour par rapport à STK_OUTDATE ?
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/09/2018, 13h57
  2. Réponses: 82
    Dernier message: 05/02/2011, 15h34
  3. Ajouter des nouvelles données dans une table
    Par Lingo dans le forum Access
    Réponses: 7
    Dernier message: 27/10/2006, 14h58
  4. Ajouter une class CSS a une nouvelle cellule
    Par Arfigado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/09/2006, 11h08
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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