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 :

Champ de type String en date [AC-2007]


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut Champ de type String en date
    Bonjour
    Dans une table d'un fichier Dbase(DBF) j’ai un champ date nommé DatFact de type texte qui se présente comme suite 20041012 (2004 pour l’année,10 pour le mois et le 12 pour le jour)
    en vba dans une requête(Recordset) je voudrais récupéré ce champ au format date 12/10/2004
    J’ai essayé avec rst.Open "select StrReverse(DatFact) from matable" et ça n’a pas marchait.
    Comment faire pour contourner ce problème.

    Merci.

    Abed_H

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    Extraire les différentes parties de ta date que tu concatènera ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select right(datfact,2) & "/" & mid(datfact,5,2) & "/" & left(datfact,4) as datefacture
    from ...
    je ne suis pas sûr si la fonction SUBSTRING est prise en charge par dbase ou Access tu peut l'essayer sinon

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 068
    Par défaut
    crée une fonction publique
    qui prend le string en argument
    qui te retourne une date
    dans laquelle
    tu extrais l'année, le mois et le jour
    et tu utilises la fonction dateSerial() (voir F1)


  4. #4
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    merci à vous deux
    Bonne journée

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 068
    Par défaut
    Si tu es parvenu à ton résultat, merci de cliquer Résolu

  6. #6
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Re,
    micniv j'ai testé ta proposition et ça n'a pas marché peux-tu corrigé l'erreur
    un message apparait disant :Erreur d’exécution ‘-2147217865 (80040e37)
    File ‘covdate.prg’ does not exist

    voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oRst.Open "Select Factures.NumAb,Abonne.RaiSoc,covdate(Factures.DatFact),Factures.Monttc From Factures Inner Join Abonne " & _
                    "On Factures.NumAb=Abonne.NumAb Where  Factures.Paiement='T' Order By 1", strConn, adOpenKeyset, adLockOptimistic
    voici la fonction personnalisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function covdate(dd)
    a = Right(dd, 2)
    b = Mid(dd, 5, 2)
    c = Left(dd, 4)
    covdate = DateSerial(c, b, a)
    End Function
    merci encore une fois

    Abed_H

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    je ne pense pas qu'il te soit possible de créer une fonction VBA et de l'appeler dans une requête SQL.

    je suppose que quand micniv a parlé de créer une fonction il a pensé à l'appeler après récupération des données issues de l'exécution de ta première requête.

    en attendant sa confirmation, qu'est ce qui se passe quand tu exécute une requête semblable à celle que j'ai proposé plutôt?

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

Discussions similaires

  1. formater un champ de type string (Displayformat string)
    Par algeriano.29 dans le forum Delphi
    Réponses: 0
    Dernier message: 10/05/2015, 11h39
  2. Concaténation de champs de type string et integer ou long
    Par scrutin dans le forum Langage SQL
    Réponses: 15
    Dernier message: 15/11/2011, 09h40
  3. Conversion d'un type string vers date
    Par projetM dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/11/2008, 14h09
  4. Bean populate quand type String devient Date
    Par Mister Nono dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/09/2007, 12h03
  5. [CR] les champs de type string
    Par yvescollet dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 05/10/2004, 16h29

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