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 :

convertir texte vers date dans une requête [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut convertir texte vers date dans une requête
    bonjour,

    J'ai un problème avec cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 where date_1 <= " & CDate(Form1.textbox1) & ""
    je n'arrive pas à convertir l'attribut date_1 de la table table1 en type date(JJ/MM/AAAA)
    Remarque : L'attribut date_1 est de type Texte.

    Merci PAR AVANCE

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Essaie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " select * from table1 where date_1 <= """ & Cstr(CDate(Form1.textbox1)) & """ ;"
    Ce n'est pas très logique de comparer des dates en texte je trouve. Il peut y avoir un problème de format: ta date est stockée en MM/JJ/AAAA et tu compares avec du texte en JJ/MM/AAAA.

    Mais si tu cherches à convertir le type de données c'est un ALTER TABLE qu'il faut utiliser.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Salut,

    J'ai essayé ta requête ce n'est pas bon.

    En faite, il faut convertir le texte date_1 en date et non le contraire. Car sinon il ne pourra pas prendre en compte la comparaison "<="

    Avec du texte ill ne peux pas comparer :
    "01/01/2010" <= "03/05/2010"

    Avec un type date il peux comparer :
    01/01/2010 <= 03/05/2010 true

    Et je ne dois pas changer le type avec un ALTER TABLE, il doit surement avoir un moyen pour convertir dans une requête select.

    Merci .

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Je suis sous Access 2003 et la comparaison de deux chaines de caractères fonctionne bien.
    Normalement tu devrais pouvoir comparer du texte avec du texte.

    Si ça ne fonctionne pas regarde bien la valeur que tu récupères dans ton Form1.textbox1, peut-être que le problème vient de là.

    Sinon pour comparer des dates comme ceci:
    #01/01/2010# <= #03/05/2010#

    Je pense que tu peux essayer avec le code suivant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 where CDate(date_1) <= " & CDate(Form1.textbox1)) & " ;

    Je n'ai aucune idée de si ça fonctionne mais je sais qu'il est possible de faire des appels de fonction pour les champs du selec.
    ex: select maMiseEnForme(table1.monChampsAmettreEnForme) from table1

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Salut,

    On peut comparer 2 textes mais le résutat n'est pas bon :
    Par exemple :

    "01/01/2010" < "02/01/2010" résultat : true
    "01/12/2010" < "02/01/2010" résultat : true

    à partir de cela tu peux voir qu'il y a un problème de date

    J'ai essayé la requête ce n'est toujours pas bon, il faut peut être modifier le format aussi.

    J'ai toujours un problème sur la convertion du le date_1. J'ai essayé aec CDate(date_1) toujours la même erreur.

    Merci pour ton aide.

  6. #6
    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
    Bonjouir,
    Le code serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "select * from table1 where date_1 <= #" & Format$(cdate(Form1.textbox1),"MM/DD/YY") & "#"
    Si date_1 est au format Date, il faut des # pour encadrer la date
    Comme les américains date le mois en premier, il est parfois necessaire de convertir le format d'ici en format americain . On pourrait utiliser des Left$ et Mid$ pour formater la date.
    Je n'ai pas testé mais ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Bonsoir,

    En faite date_1 est de type Texte, il n'est pas de type Date.
    Car il y a des moments ou l'on peut trouver des données du genre "20/03/2010" mais aussi "3 mois".

    C'est pour cela que cela ne fonctionnait pas. Ce soir je vais essayer d'établir une requete qui récupère les éléments "xx/xx/xxxx" et non "x mois" puis de convertir en date en utilisant cdate()

    Merci

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    J'ai réalisé cette requête mais il y a l'erreur type de données incompatible.
    Sachant que de base l'attibut date_1 est de type Texte et peut contenir des valeurs comme "01/09/2009" ou "3 mois".

    Dans un premier temps j'ai essayé d'avoir une table qui possède uniquement des données du genre "xx/xx/xxx", puis de les transformer en date. Voici la requète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CDate(toto.date_1) AS Expr1
    FROM table1 INNER JOIN (select * from table1 where Mid(date_dispo, 3, 1) ="/")  AS toto ON table1.num_t = toto.num_t where CDate(toto.date_1) > #01/03/2010#
    Merci par avance

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Salut,

    Ne trouvant pas de solution, j'ai feinté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 where (Mid(date_1, 3, 1) = '/' and (Mid(date_1, 7, 4) > " & Mid(Form1.Textbox1, 7, 4) & " or (Mid(date_1, 4, 2) >" & Mid(Form1.Textbox1, 4, 2) & " and Mid(date_1, 7, 4) >=" & Mid(Form1.Tetbox1, 7, 4) & ") or (Mid(date_1, 1, 2) >=" & Mid(Form1.Textbox1, 1, 2) & " and Mid(date_1, 4, 2) >=" & Mid(Form1.Textbox1, 4, 2) & " and Mid(date_1, 7, 4)>=" & Mid(Form1.Textbox1, 7, 4) & ")))"
    Merci le problème est résolu

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

Discussions similaires

  1. Comment comparé une date dans une requête?
    Par ghan77 dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2006, 10h22
  2. Constante Date dans une requête SQL
    Par tarbala dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 25/04/2006, 16h24
  3. [ADO] Passage de paramètre de type Date dans une requête
    Par e-ric dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/01/2006, 12h36
  4. Réponses: 7
    Dernier message: 07/10/2004, 23h59
  5. Date dans une requête
    Par fdloisel dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/09/2004, 17h14

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