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 :

isoler l'année d'un champs date pour appliquer critère


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut isoler l'année d'un champs date pour appliquer critère
    Bonsoir à tous,
    Suite à une opération, je souhaite réduire les résultats de ma requête afin d'en enlever les enregistrements déjà traités.
    Mon critère de retrait est basé sur la date : indépendamment l'année et le mois. Je pensais bêtement faire comme dans un DSUM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ratio = 100 * Nz(DSum("[montanteur]", "Rqttotal", "Year([jourop]) = Year(#" & Format(rcs![jourop], "mm/dd/yyyy") & "#) AND Month([jourop]) = Month(#" & Format(rcs![jourop], "mm/dd/yyyy") & "#) "), 0) / Me.lbltotal.Caption
    mais mon code ne veut pas fonctionner...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If InStr(SQLtotal, "WHERE") > 0 Then
            'SQLtotal = SQLtotal & "AND Tblfluxcash.jourop <> #" & Year(Format(rcs![jourop], "mm/dd/yyyy")) & "# OR Tblfluxcash.jourop <>  #" & Month(Format(rcs![jourop], "mm/dd/yyyy")) & "# ) "
            SQLtotal = SQLtotal & "AND " & Year([jourop]) & " <> #" & Year(Format(rcs![jourop], "mm/dd/yyyy")) & "# "
     
     
        Else
            'SQLtotal = SQLtotal & "WHERE (Tblfluxcash.jourop <> #" & Year(Format(rcs![jourop], "mm/dd/yyyy")) & "# OR Tblfluxcash.jourop <>  #" & Month(Format(rcs![jourop], "mm/dd/yyyy")) & "# ) "
        End If
    J'ai essayé en utilisant Left, Right, Year(Format()), nomtable.nomchamp, [nomtable]![nomchamp],... sans aucun succès !
    J'ai une erreur 2465 récurrente : Microsoft Access ne trouve pas le champs " |1 " auquel il est fait référence dans votre expression.
    Je pensais que le "1" correspondait au mois ou au jour (mon champs date dans la table est enregistré en yyyy/mm/dd), mais comme le résultat ne change pas en utilisant le Format(), Left ou autre, je ne vois pas...
    Dans le code ci-dessus, le code n'étant pas en commentaire me renvoi une erreur 3075 : erreur de syntaxe dans la date dans l'expression "AND Tblfluxcash.jourop <> #2016 ". Il semble que mon second dièse ne soit pas prit en compte...

    J'ai également essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLtotal = SQLtotal & "WHERE Tblfluxcash.jourop <> #*/*/" & Year(rcs![jourop]) & "# "
    en mettant les /* avant et après le Year(rcs![jour]) sans plus de succès ;

    Quelqu'un aurait un lien vers un tuto/exemple permettant de régler ce genre de problème ? Ou une idée de solution ?

    Bien à vous,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Pour une raison que je ne saisi pas du tout, c'est le rcs![jourop] qui est la cause du problème ;
    J'ai retravaillé le code, puis me suis dit que j'allais essayer avec des valeurs brutes, ce qui a fonctionné ; j'ai ensuite affecté mes valeurs year(rcs![jourop]) et month() a des variables, et ça fonctionne...
    Ici l'extrait de code correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        rcs.MoveFirst
        annee = Year(rcs![jourop])
        mois = Month(rcs![jourop])
        Me.lsttotal.AddItem moisannee(rcs![jourop]) & ";" & Nz(DSum("[montanteur]", "Rqttotal", "Year([jourop]) = " & annee & " AND Month([jourop]) = " & mois & " "), "mouvement nul") & ";" & ratio
        If InStr(SQLtotal, "WHERE") > 0 Then
            SQLtotal = SQLtotal & "AND (Year(Tblfluxcash.jourop) <> " & annee & " OR Month(Tblfluxcash.jourop) <>  " & mois & " ) "
     
        Else
            SQLtotal = SQLtotal & "WHERE (Year(Tblfluxcash.jourop) <> " & annee & " OR Month(Tblfluxcash.jourop) <>  " & mois & " ) "
        End If

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

Discussions similaires

  1. [MySQL] Récupérer le mois et l'année d'un champ date pour instruction WHERE
    Par Auresky dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/02/2013, 15h48
  2. Extraire mois et année d'un champs date
    Par cnguyen dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/07/2006, 11h56
  3. Récupérer l'année dans un champ date
    Par griese dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/07/2006, 16h23
  4. [SQL Server] Selectionner juste l'année d'un champ date
    Par calison3 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/03/2006, 12h35
  5. récuperer année d'un champ date
    Par tomm dans le forum Bases de données
    Réponses: 11
    Dernier message: 12/05/2004, 16h24

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