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 :

resultat de la fonction ajdate qui ne respecte pas les critères


Sujet :

Requêtes et SQL.

  1. #1
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut resultat de la fonction ajdate qui ne respecte pas les critères
    Salut
    J'ai une requête avec une fonction ajdate qui ne respecte pas du tout les critères donnés.
    Ci-joint le fichier reduit pour d'amples info.
    En fait je voudrai trouver dans mes immobilisations celles qui sont completement amorties. J'ai alors fait une addition de date pour le comparer à un interval de date. Mais la je ne voie pas du tout mon erreure.
    A savoir que j'ai essayé sans FORMATDATETIME et aussi avec "31/12/" &
    right(dateimmo;4)+dureimmo, mais rien à faire ACCESS ne veux pas accepter mes choix.
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Salut !

    Si j'écris pour "Entre le " 25.08.2006 "et le" 30.08.2006 sur ton form, j'obtiens dans la requête :

    numcmpt_comptable : 433 005
    valeur initiale : 3 000 000
    derniereAnnee : 26.08.09

    Est-ce que ta requête affiche la même chose chez toi ?

  3. #3
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Oui j'obtiens la même chose

  4. #4
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    OK !

    Alors qu'est-ce qui ne joue pas ?
    Il me semble que c'est ok, non ?

  5. #5
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Non ce n'est pas OK du moment que 2009 n'est pas entre xx/xx/2006 et yy/yy/2006.

  6. #6
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Suis-je bête !!!

    Alors, si on anaylse ta formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derniereAnnee: FormatDateTime(AjDate("aaaa";[dureeimmo];[dateacquisition]);2)
    On remarque tout de suite que "dureeimmo" pour la Mobylette acquise le 26.08.06 a une valeur de 3.
    Il est donc normal que l'année dans ta requête soit 2009 puisque 2006 + 3...

  7. #7
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Essayes plutôt ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derniereAnnee: FormatDateTime(AjDate("aaaa";(Année([dateacquisition])+[dureeimmo])-Année(Date());[dateacquisition]);2)
    ... et dis moi si c'est cela que tu recherches

  8. #8
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Je voie qu'on ne se comprend pas sur l'objet de la reqête
    La date d'acquisition est bien en 2006
    La date de sortie est alors 2006+3
    C'est en fait le resultat de 2006+3 qui doit être comprise entre mes deux date saisie et non 2006
    Il s'agit de trouver les éléments dont dateacquisition +dureimmobilisation est comprise entre les deux dates que vous saisissez.

  9. #9
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Alors... voilà (si cette fois j'ai compris...) un petit code SQL pour remplacer le tien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT immobilisations.numcmpt_comptable, immobilisations.montantacquisition, [dateacquisition]+([dureeimmo]*365) AS derniereAnnee
    FROM immobilisations
    WHERE ((([dateacquisition]+([dureeimmo]*365)) Between FormatDateTime([Formulaires]![etat_financier]![immodatedebut],2) And FormatDateTime([Formulaires]![etat_financier]![immodatefin],2)));

  10. #10
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    ... et alors, tu as essayé ?

  11. #11
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Pas de chance
    J'obtiens toujours la même chose.
    C'est quand même bizarre: la requête vérifie le critère sur le champ d'origine et ensuite renvoie le résultat de la fonction
    je pense plutôt que c'est un bug sur ACCESS.
    Je pense faire une requête ajout dans une table temporaire et ensuite faire ma requête sur cette table là ça marche bien.
    Je m'excuse pour la lenteur, ma connexion n'est pas très bonne.
    Merci infiniment.

  12. #12
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Je t'envoie ma BD, elle fonctionne

  13. #13
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Je suis désolé mais ça ne repond toujours pas à mes attentes

    La requête doit d'abord évaluer la fonction puis renvoyer les enrégistrements obtenus repondant au critère.
    Mais tel n'est le cas.

    Cette requête renvoie d'abord les enregistrement repondant au critère avant évaluation puis évalue la fonction. Ce n'est pas du tout correcte.
    Je t'envoie un image
    Fichiers attachés Fichiers attachés

  14. #14
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Je suis à mon tour désolé mais j'ai l'impression que le challenge principal de ton post... c'est de comprendre ce que tu veux !!

    L'image que tu as envoyé est censée représenter quoi ? Ce que tu veux ?... ou ce que tu ne veux pas ??

    Donnes nous un exemple précis, avec les données de ta table et ce que doit te renvoyer ta requête en fonction des deux dates tampons

  15. #15
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    J'espère ne pas t'avoir enuyé ou bléssé.
    En fait voila
    un élément entre ce jour 12/02/2006 (date d'aquisition) et doit sortir dans 3 (durée) ans. Un autre 30/05/2007 (date d'aquisition) et doit sortir dans 5 (durée) ans.
    A une date donnée je voudrais savoir ceux qui doivent sortir:
    alors je fait date d'aquisition+durée =(date de sortie) pour tous les éléments; il s'agit à ce niveau de trouver les éléments dont (date de sortie) est entre dateUN et dateDEUX
    Exemple 1: si je tape 01/01/2006 et 31/12/2006 je ne doit rien obtenir puisque les deux éléments ci-dessus ne sorte qu'en 2009 et 2012
    Exemple 2: si je tape 01/01/2009 et 31/12/2009 je doit obtenir un élément ie celui qui doit sortir en 2009
    J'espère avoir été assez claire.

  16. #16
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Ni ennuyé ni blessé, un peu agacé... !

    Alors voilà, en fonction de ce que tu m'as dit dans ton dernier message, j'ai testé avec les dates que tu as donné et ainsi, j'ai dans ma table :

    Citation Envoyé par alassanediakite Voir le message
    - Un élément entre ce jour 12/02/2006 (date d'aquisition) et doit sortir dans 3 (durée) ans.
    - Un autre 30/05/2007 (date d'aquisition) et doit sortir dans 5 (durée) ans.
    Ensuite, j'ai testé ma requête avec les dates :

    Citation Envoyé par alassanediakite Voir le message
    - 01/01/2006 et 31/12/2006
    - 01/01/2009 et 31/12/2009
    Pour le premier cas, je n'obtiens rien dans ma requête, dans le second (01/01/2009 et 31/12/2009), j'obtiens :
    numcmpt_comptable : 433 005
    Valeur initiale : 3 000 000
    derniereAnnee : 11.02.09
    ... et enfin, voici le code Sql de ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT immobilisations.numcmpt_comptable, immobilisations.montantacquisition, [dateacquisition]+([dureeimmo]*365) AS derniereAnnee
    FROM immobilisations
    WHERE ((([dateacquisition]+([dureeimmo]*365)) Between Formulaires!etat_financier!immodatedebut And Formulaires!etat_financier!immodatefin));
    C'est-y pas plus simple quand les explications sont claires ??

  17. #17
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Ca marche bien
    Toutes mes excuses pour le temps.
    Merci beaucoup

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

Discussions similaires

  1. Fonction Aggr qui ne renvoie pas les résultats attendus
    Par christelle_s dans le forum QlikView
    Réponses: 1
    Dernier message: 21/11/2013, 14h07
  2. [PHP 5.0] Existe-il une fonction shuffle qui ne réinitialise pas les clés ?
    Par Dsphinx dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2012, 16h09
  3. Fonction javascript qui n'effectue pas les actions demandées
    Par Joe-La-Boule dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/06/2008, 15h27
  4. fonction header qui ne redirige pas
    Par cels dans le forum Langage
    Réponses: 8
    Dernier message: 01/11/2006, 10h12
  5. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55

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