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 :

reformater toutes les valeurs d'un champ


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut reformater toutes les valeurs d'un champ
    bonjour, j'ai importé dans une base de donnée access un fichier texte qui comprenait un champ "date"

    Après avoir travaillé longement avec cette base de données je suis amené a utiliser les valeurs de ce champs date. Or j'ai remarqué que la date est présentée comme suit dans ma table:
    4082010 (pour 4/08/2010) ou encore 12072010 pour 12/07/2010

    comment faire pour mettre a jour tous les champs pour qu'ils soit présenté correctement? (JJ/MM/AAAA)

    Merci bcp

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Quel est le type du champ dans la table, c'est du texte ou un entier long ?

    A+

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    c'est un entier long

  4. #4
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonsoir,
    rien empêche de créer un champ supplementaire qui recueillera la date grâce à une requête Mise à jour

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    OK, je te propose une solution mais il faudra que tu vérifie que le mois a bien été traité.

    0) Sauvegarder ta BD
    1) créer un champ date dans la table.
    2) créer une requête de mise à jour (update)
    3) dans la ligne MAJ du champ date :

    dateserial(right(cstr([TonChampDateNum]),4), mid(format$([TonChampDateNum],"00000000"),3,2), left((format$([TonChampDateNum],"00000000"),2))

    Si cela ne passe pas remplacer le , par des ;.

    Un mot d'epxlication : dateSerial() créer une date à partir de l'année, mois et du jour. Donc
    pour l'année : je récupère les 4 derniers chiffres du nombre
    pour le mois : je force le nombre à 8 chiffres puis je prend les caractères 3 et 4
    pour le jour : je force le nombre à 8 chiffres puis je prend les 2 premiers caractères

    A+

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    j'ai tout bien essayé mais ca marche pas

    voilà la querry

    DateSerial (Right(CStr([MinOfMinOfinvoice_date]);4); Mid( Format$([MinOfMinOfinvoice_date]; "00000000" ) ;3; 2; ); Left (( Format$( [MinOfMinOfinvoice_date]; "00000000" ) ;2))

    et voilà le message d'erreur : the expression you entered has a function containing the wrong number of arguments (avec la dernière parenthèse en surbrillance (j'ai essayé en rajoutant une parenthèse car je croyais qu'il en manquait une mais rien à faire...

    merci qd même pour l'aide

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour thomaspaul1985,

    Cette requête devrait fonctionner :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Table1
    SET Table1.date_1 = IIf(Len([date])=7,"0" & Mid([date],1,1) & "/" & Mid([date],2,2) & "/" & Mid([date],4,4),Mid([date],1,2) & "/" & Mid([date],3,2) & "/" & Mid([date],5,4))

    Avec "date" étant ton "entier long" et "date_1" en format "date".

    "Mid" correspond à la fonction "Extracchaîne" accessible par l'assistant (décidément, très pratique, soi dit en passant).

    L'important étant de repérer 1012010 (len=7), le transformer en 01012010 (len=8), pour le re-transformer en 01/01/2010 valide, en final, pour un champ date.

  8. #8
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ca a marché :d
    un tout grand merci a vous,
    je crois que je reviendrai ;-)

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

Discussions similaires

  1. [A-03] Requête avec toutes les valeurs d'un champ
    Par badeux dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2008, 12h22
  2. Réponses: 7
    Dernier message: 30/01/2008, 18h39
  3. nombre d'occurences de toutes les valeurs d'un champ
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/01/2008, 21h31
  4. Réponses: 8
    Dernier message: 13/07/2007, 12h05
  5. Requete SELECT : prendre toutes les valeurs pour 1 champ
    Par fab22montpellier dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/09/2005, 10h12

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