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 :

renseigner des valeurs manquantes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut renseigner des valeurs manquantes
    Bonjour,

    Je travaille sur des séries chronologiques avec ACCESS. Dans ma base de données, le dernier jour de chaque mois contenant 31 jours est manquant.

    Comment devrais-je m'y prendre pour demander à ACCESS d'assigner la valeur du jour précédent pour chaque jour manquant?

    J'imagine que c'est sans doute tout bête mais je n'ai pas réussi à trouver...

    Merci par avance pour votre aide!

    Clem

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Peut-on avoir des explications plus détaillées?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Bonjour Pierre,

    Je dispose de séries journalières de précipitation issues de scénarios climatiques qui génèrent 360 estimations par an, considérant ainsi que chacun des 12 mois possède 30 jours.

    Il me faudrait ramener ces scénarios climatiques à des séries chronologiques complètes (365 jours ou 366 pour les années bisextiles) . Cela reviendrait donc à rajouter pour 7 des mois de l'année, une valeur pour le 31° jour. Pour des raisons de simplicité, prendre la valeur du jour précédent me semble être la manière la plus simple de répondre à mon besoin.

    Merci!

  4. #4
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    bonjour,

    Ne risques-tu pas d'avoir des problèmes de doublons dans l'exploitation de tes données, par la suite ?

    Pourquoi ne changes-tu pas les paramètres des 7 mois de l'année qui ont 31 jours ?

    Cordialement,

    Stéphanie

  5. #5
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    Hello,


    Ok, donc si j'ai bien compris, tu veux :

    pour 7 dates précisément (soit les 7 31 qui te manquent) les ajouter dans ta table.

    Pour cela, tu peux faire une requête INSERT INTO.

    La valeur de la température peut être récupéré avec la fonction DLOOKUP dans laquelle ton critère est le 30 de la date que tu insères.

    Je ne connais pas trop ton niveau.

    Si tu codes en VBA, que tu maîtrises les recordsets, tu peux le faire par là.

    Sinon, tu peux faire une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO tbl_Mesures
    (
         fldDate
       , fldTempérature
    )
    SELECT 
         #31-05-2007# AS expDate
       , Dlookup('[fldTempérature]','tbl_Mesures','[fldDate]=#30-05-2007#') AS expTempérature

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Rebonjour,

    De retour sur la question que je me posais initialement, j'ai un petit problème lorsque j'essaie d'exécuter la requête ci-dessous avec comme message d'erreur : "Microsoft Office Access n'a pas mis à jour un champs à cause d'un échec de conversionde type, etc..."

    Pour rappel, je dispose comme données de la table "tblData" qui contient mes champs :
    - Data.Date, une série chronologique journalière sur x années;
    - Data.Value une valeur associée à chaque DataDate. Tous les 31 des mois (pour les mois qui possèdent 31 jours) n'ont pas de valeur DataValue associée.

    Ma problématique est d'affecter à toutes les valeurs vides de ces 31 du mois, la valeur du jour précédent, soit celle du 30°jour.

    Ma requête est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE tblData SET tblData.DataValue = DLookup("[tblData].[DataValue]","[tblData]","[tblData].[DataDate]=#" & dateAdd("d",-1,[DataDate] & "#"))
    WHERE (((Day([DataDate]))=31));

    Si vous pouvez m'aider à trouver l'erreur...

    Merci beaucoup!

    Clem

  7. #7
    Membre régulier Avatar de samuelsiffert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Cette requête devrait te convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE tblData SET tblData.datavalue = DLookUp("[DataValue]","tblData","[DataDate]=#" & Format(DateAdd("d",-1,[tblData].[DataDate]),"mm/dd/yyyy") & "#")
    WHERE Day([DataDate])=31;
    Remarque :
    Pour manipuler les dates, il vaut mieux a priori les mettre au format américain.

    @+

    Sam

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Impécable, ça marche très bien!

    Merci à tous et à bientôt!

  9. #9
    Membre régulier Avatar de samuelsiffert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 109
    Points
    109
    Par défaut
    De rien, ça fait toujours plaisir de dépanner quelqu'un.

    Penses à marquer ta discussion comme résolue...

    @+

    Sam

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

Discussions similaires

  1. requête avec des valeurs manquantes
    Par DiverSIG dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/08/2009, 14h05
  2. Réponses: 10
    Dernier message: 19/08/2009, 12h02
  3. [AC-2003] Recherche des valeurs manquantes
    Par merocean dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 30/06/2009, 23h23
  4. Interpolation linéraire des valeurs manquantes
    Par j_ere_my dans le forum MATLAB
    Réponses: 17
    Dernier message: 27/11/2008, 17h15
  5. Changement des valeurs manquantes NA par 0
    Par fafabzh6 dans le forum R
    Réponses: 3
    Dernier message: 01/04/2008, 17h24

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