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

VB 6 et antérieur Discussion :

[VB6][Expert Only ?][ADO] Format universel des dates


Sujet :

VB 6 et antérieur

  1. #1
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut [VB6][Expert Only ?][ADO] Format universel des dates
    Bonjour à tous,

    J'ai une connexion ADO.
    J'aimerais connaître le format des dates que je dois utiliser (dmy, ymd, ...) afin d'exécuter par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set rec  = conn.Execute("select * from t where d = " & Format(maDate,"format??????"))
    Merci.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  2. #2
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    salut !

    Il y a bcp de post sur ce sujet !
    Notament :

    http://<br /> http://www.developpez...<br /> <br />
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  3. #3
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Oui mais "#mm/dd/yyyy#" ne fonctionne que pour ACCESS.

    Sous SQLServer le format est 'yyyy/mm/dd'.
    Sous MSDE d'un pack Office Français est 'dd/mm/yyyy'.

    L'intérêt de la couche ADO est que le même code fonctionne quelque soit le SGBD.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  4. #4
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    hello !

    Sorry , je croyais que tu cherchais juste pour Access

    Si je comprends, tu voudrais un codage de date universel sous ADO pour n'importe quelle SGBD ?

    Là, je cale car actuellement, je n'utilise qu'Access et bientôt SQL Serveur mais je reste tj dans un seul type de SGBD
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  5. #5
    Fox
    Fox est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 52
    Points : 52
    Points
    52
    Par défaut
    Normalement, le format universel pour les dates est yyyymmdd, malheureusement Access possède un format propriétaire... qui le met à part de la plupart des autres SGBD.

    @+

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Mais alors comment fait la couche ADO pour ne pas se tromper lorsqu'on affecte une date dans un champ d'un recordset :
    Quelque soit le SGBD, l'affectation est correcte.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  7. #7
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    Je pense qu'il faut systématiquement transformer une date en long (CLng(madate)) dès que l'on doit traiter des dates. Ainsi, plus de problème de format lors des calculs et autres emplois de date. Il n'y a plus qu'a définir le format voulu dans l'interface (textbox par exemple).

  8. #8
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Oui mais quand il faut exécuter une requête SQL avec une condition (where) sur une date :
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  9. #9
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Un pro de l'ADO ne pourrait-il pas me donner son point de vue :
    Et surtout comment déterminer le format des dates d'une connexion :
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  10. #10
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Les SGBD ne gèrent pas les formats de dates de la même manière.
    Donc seule l'accès à la valeur stockée fonctionne pour tous.

    Les champs de type Date ou Time attendent un long
    Les champs de type DateTime ou TimeStamp attendent un réél.

    Il existe des fonction DateSerial et TimeSeriel qui permettent la conversion.

  11. #11
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Oui mais mon objectif n'est pas d'affecter une date dans un champ d'un recordset mais de trouver par exemple toutes les ventes dont la date est antérieure à une date donnée.

    Sur une base Access(#mm/dd/yyyy#)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rec.Open "select * from vente where date_vente <= #" & Format(maDate,"mm/dd/yyyy") & "#"
    SQL server US('yyyy/mm/dd')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rec.Open "select * from vente where date_vente <= '" & Format(maDate,"yyyy/mm/dd") & "'"
    MSDE FR('dd/mm/yyyy')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rec.Open "select * from vente where date_vente <= '" & Format(maDate,"dd/mm/yyyy") & "'"

    Je viens de trouver une solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rec.Filter("date_vente <= #" & Format(maDate,"mm/dd/yyyy" & "#")
    rec.Open "vente", ................
    Ainsi, quelque soit le SGBD, les conditions sur les dates fonctionnent.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je ne vais pas te donner LA solution, mais je pense déjà que tu devrais mettre le code dans une fonction, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    '*****************************************************
    ' But:  Formate un variant contenant une Date dans le format de date du SGBD 
    '           yyyy-mm-dd
    ' Parametres: vTheDate a variable of type Date to be formated
    'Modifier cette fonction lors d'un changement de SGBD 
    '*****************************************************
    Public Function f_Datev2SGBD_S(ByVal vTheDate As Variant)
    Dim sRetour As String
    If IsNull(vTheDate) Then
        sRetour = " NULL "
    Else
        sRetour = Format$(vTheDate , "yyyy-mm-dd")
    End If
    f_Datev2SGBD_S = sRetour
    End Function
    Cette fonction marchait avec Access.

    Ainsi tu pourrais changer de fonction quand tu changes de SGBD, et si tu trouve LA Solution tu la mets en place dans la fonction.
    Il me semble que sur le forum SQL (ou MS SQL sErver) SQL pro a fait des propositions sur le format des dates (le titre du post était [debutant] [VB] Format de date.
    Sinon pour SQL Server et MSDE, tu peux essayer de définir pour l'utilisateur de connexion à ta base, un format de date (par l'intermédiaire de son langage sp_default language , ou sp_configure).

    A+
    Soazig

  13. #13
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    ce que je voulais dire c'est que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Employés WHERE Employés.[Date de naissance]>21916;
    c'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Employés WHERE Employés.[Date de naissance]>#01/01/60#;
    Mais c'est indifférent au format de la date

  14. #14
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    bidou, tu es sûr que tous les SGBDs codent leurs dates à partir de la même "date 0" ?
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  15. #15
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Tout ceux que j'ai essayé sauf 4D

  16. #16
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Et au niveau des performances, quel est le code le plus rapide ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rec.Open "select * from vente where date_vente <= " & CLong(maDate) 
     
    rec.Filter("date_vente <= #" & Format(maDate,"mm/dd/yyyy" & "#") 
    rec.Open "vente", ................
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  17. #17
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Ca c'est un vaste problème, car cela dépend du curseur et des fonctionnalités que l'on souhaite por son recordset.
    Mais disons que pour une extraction simple le code SQL va toujours plus vite.

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

Discussions similaires

  1. Format des dates pour acces à une BD MS Access..
    Par hagler dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/10/2005, 18h16
  2. [VBA] Pb de format des dates dans un état
    Par linda15975 dans le forum IHM
    Réponses: 45
    Dernier message: 21/06/2005, 14h49
  3. Format des dates
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 11h03
  4. [C#] Format des dates pour une ComboBox...
    Par frechy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2005, 17h08
  5. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15

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