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

  1. #1
    Nouveau membre du Club
    Problème format date et heure sur base Access liée
    Bonjour,

    Je fait une synthése du post que j'ai créer sur le forum SQL-Server.

    On n'a pas pu m'aider. Comme c'est un problème entre SQL-Server et Access, on m'a conseiller d'exposer mon problème aussi ici.


    J'ai développé une base de données sous Access que j'ai ensuite migré sous sous SQL server 2017 sur notre serveur à l'aide du logiciel "SQL Server Migration Assistant for Access".

    Tout c'est bien passé sauf mes format "date/heure" et qui c'est transformé en "datetime2".

    Je lis et écrit dans cette base avec une base Access que j'ai lié à la base SQL Server (mes formulaires et requêtes étant déjà fait sous Access). Pas de problème.

    Le problème, c'est qu'à priori, quand je lie Access à une base SQL, je ne peux pas modifier mes formats d'affichage sur Access, ni sur l'affichage des tables ni sur les formulaires.

    Quand je regarde le format par défaut des heures sur les tables depuis Access c'est Texte court...

    Quand je veux le modifier (quelque soit le format) j'ai le message d'erreur :"Opération non autorisée pour ce type d'action". Voir capture ci-après.



    Donc quand je veux lire les dates ou les heures depuis Access, les formats se présente sous la forme:
    2019-07-21 00:00:00 pour les date
    1970-01-01 02:45:00 (avec toujours cette date par défaut) pour les heures.

    C'est pas top pour la lecture

    En modifiant le type datetime2 en date et time sur la base SQL Server, j'obtiens les affichage suivant sur Access:
    2019-07-21 pour les dates
    02:45:00.0000000 pour les heures.

    Pour la lecture, c'est un peu mieux pour les dates mais pas pour les heures.

    J'aimerai avoir un affichage classique à la Française, soit:
    21-07-2019 ou 21/07/2019 pour les dates
    02:45:00 pour les heures

    Quelqu'un a-t-il déjà été confronté à ce problème? ou a une idée?

    Environement:
    Windows 10 Professionnel
    Office 365
    Access 2016 Mise à jour du 30/11/19
    SQL-Server 2017

  2. #2
    Expert confirmé
    Bonjour,

    J'ai aussi des données sur des tables SQL server et ne comprends pas bien ton problème

    Citation Envoyé par CeluiQuiCherche Voir le message
    Le problème, c'est qu'à priori, quand je lie Access à une base SQL, je ne peux pas modifier mes formats d'affichage sur Access, ni sur l'affichage des tables ni sur les formulaires.
    Une table a un format de stockage (datetime2...) mais pas de format d'affichage

    D'une manière générale on ne peut rien changer dans la frontale sur les tables liées, qu'elles soient sous access, SQL server ou autre. On peut juste manipuler les données qu'elles contiennent.

    Par contre, un formulaire a un format d'affichage qu'il essaie d'appliquer quelque soit la donnée qu'il reçoit et quelle qu'en soit l'origine : date dans l'ordre qu'on veut, affichage des heures ou non...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Nouveau membre du Club
    Merci de prendre mon problème en considération et désolé pour le manque de réactivité mais je fait plein de trucs en même temps.

    Le problème c'est que je ne peux pas modifier le format d'affichage sur les formulaires quand je travaille sur une base liée.

    Ci-après une illustration de mon problème:

    - en premier ma base d'origine on voit que le menu déroulant de format est plein

    - en second la même base exportée sous SQL Server et liée depuis Access on voit que le menu déroulant de format est vide. Même si je mais une terme du 1er menu déroulant ça ne fait rien.


    Menu en mode création du format d'affichage d'un champ date d'un formulaire sur une base Access NON liée



    Resultat



    Menu en mode création du format d'affichage d'un champ date d'un formulaire sur une base Access LIÉE



    Résultat


  4. #4
    Expert éminent sénior
    bonjour,
    le problème est là:
    Quand je regarde le format par défaut des heures sur les tables depuis Access c'est Texte court...
    tant que les champs dates seront de type Texte, la tentative de changement de format sera impossible: on ne peut pas affecter un format date à champ de type Texte.
    La question est de savoir si c'est l'attache des tables qui transforme les dates en texte (comme cela arrive parfois lorsque le type de champ de la base externe n'est pas reconnu) ou si elles sont en texte à l'origine... dans ce cas une conversion de données et un changement de type s'imposent.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  5. #5
    Nouveau membre du Club
    La question est de savoir si c'est l'attache des tables qui transforme les dates en texte (comme cela arrive parfois lorsque le type de champ de la base externe n'est pas reconnu) ou si elles sont en texte à l'origine...
    Les date ne sont pas en texte sur SQL Server mais en datetime2 ou en date et time suivant les tests que j'ai fait


    dans ce cas une conversion de données et un changement de type s'imposent.
    J'ai modifier le type sur SQL Server, ça m'a amélioré l'affichage mais j'ai toujours "Texte court" sur les tables et toujours rien dans le menu déroulant du format de champ du formulaire...

    En modifiant le type datetime2 en date et time sur la base SQL Server, j'obtiens les affichage suivant sur Access:
    2019-07-21 pour les dates
    02:45:00.0000000 pour les heures.

  6. #6
    Expert éminent sénior
    ce n'est pas le format qui importe, c'est le contenu: tant que le champ n'est pas reconnu en tant que date, il n'y aura pas de solution.

    Il faut garder à l'esprit qu'une date dans une table Access est stockée sous une forme numérique (Réel Double) et c'est le format qui la rend compréhensible à l'humain... il est possible que sur SQL Server ce ne soit pas le cas, raison pour laquelle les séparateurs transforment le champ en texte ou également une valeur trop grande (l'heure peut contenir plus de décimales sur SQL Server: datetime2, par exemple, a une précision de 100 nanosecondes et dans ce cas n'est pas convertible en type date/heure Access).
    Même si ce sont 2 produits Microsoft ils obéissent à des normes différentes ...

    La solution est peut-être la conversion en smalldatetime dans SQL Server ?
    A tester
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  7. #7
    Nouveau membre du Club
    Nickel!!!! ça marche

    En fait sur SQL Server, il y a un format auquel je n'avais pas fait attention Datetime tout simplement (sans le 2) et c'est celui-là qu'il faut selectionner.

    Merci tee_grandbois c'est
    La solution est peut-être la conversion en smalldatetime dans SQL Server ?
    qui m'a mis sur la voie.

  8. #8
    Expert confirmé
    Ah je viens de regarder et c'est datetime que j'utilise aussi, sans souci à ce jour
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

###raw>template_hook.ano_emploi###