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

IHM Discussion :

séparer les champs date et heure


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut séparer les champs date et heure
    bonjour,

    je tente actuellement de développer une "petite" base de donnée me permettant de répertorier les résultats de mes sorties de pêche.
    Etant néophyte en la matière, vous pouvez vous douter que cela me pose quelques problèmes et notamment celui que j'aimerais vous exposer. j'ai bien entendu pris le temps de consulter le FAQ mais n'ai pas trouvé de solution. Pourtant je suis convaincu que ce petite soucis vous paraîtra dérisoire.

    Voilà ce que je souhaite réaliser: dans la capture d'écran sc01 ci-jointe le formulaire contient les champs "date début" et "heure début" qui sont séparés. Or j'aimerais qu'il renseignent le même champ dans la table correspondante nommées "session" sous le format de date complet.
    L'opération étant répétée avec les champs "date fin" et heure fin" permettrait d'effectuer des calculs simples tel que le temps d'une session que l'on peut voir sur l'autre capture d'écran sc02.

    Sauriez vous comment faire ?

    J'espère avoir été claire, n'hésitez pas à me demander des précisions si nécessaire.

    D'avance merci
    Images attachées Images attachées   

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    et bienvenu sur le forum de DVP

    Ah, les calculs sur les champs Date !!!

    Une date est un nombre dont l'origine est le 01/01/1900 ainsi aujourd'hui 07/10/2009 représente le nombre : 40093 (soit 40093 jours écoulés depuis le 01/01/1900 !!!)
    La soustraction de deux dates te retourne donc un nombre.

    Un heure représente la fraction d'un nombre en tre 0 et 1. Ainsi, il est 9h20. cette heure est représentée par le nombre : 0.3894

    En conclusion :
    Je ne pense pas que cela soit très pratique d'éclater les champs en deux (Jour et heure)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour ton explication Jeannot. En effet, éclater les champs ne présente que peu d'intérêt, il ne s'agit que d'un problème de mise en page finalement. Je pense que je vais continuer à développer ma base et j'y reviendrai éventuellement plus tard.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Pour l'affichage pas de problème.
    En revanche pour la saisie, avoir deux contrôles liés à un champ d'une table, ça ne fonctionne pas.
    Ça serait un peu comme avoir deux contrôles liés à un champ numérique.
    Un pour la partie entière et un pour la partie fractionnelle.
    En saisissant dans le contrôle "partie entière" tu écris dans le champ et donc tu écrases le contenu du champ.
    En saisissant dans le contrôle "partie fractionnelle" tu écris toujours dans le champ et donc tu l'écrases à nouveau.

    Pour que ça fonctionne il ne faut qu'un contrôle lié au champ.
    Par exemple la date. Le contrôle pour l'heure devra être indépendant (pas de source contrôle).
    Avec du code VBA exécuté lors de certains événements, on peut faire comme si le contrôle heure était lié à la partie heure de la date.

    Exemple.
    Table avec champs DateDeb et DateFin, tous deux de type date/heure.
    Formulaire avec contrôles ...
    DateDeb ....... lié au champ DateDeb, format date abrégé
    HeureDeb ...... indépendant, format heure abrégé
    DateFin......... lié au champ DateFin, format date abrégé
    HeureFin........ indépendant, format heure abrégé

    Au niveau du formulaire, on va écrire du code pour l'événement "Sur activation".
    Il se produit chaque fois qu'on change d'enregistrement.
    Le code consiste à extraire l'heure des contrôles DateDeb et DateFin, et de la mettre dans les contrôles HeureDeb et HeureFin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Current()
    If IsNull(Me.DateDeb) Then
       Me.HeureDeb = TimeSerial(0, 0, 0)
    Else
       Me.HeureDeb = TimeSerial(Hour(Me.DateDeb), Minute(Me.DateDeb), Second(Me.DateDeb))
    End If
     
    If IsNull(Me.DateFin) Then
       Me.HeureFin = TimeSerial(0, 0, 0)
    Else
       Me.HeureFin = TimeSerial(Hour(Me.DateFin), Minute(Me.DateFin), Second(Me.DateFin))
    End If
    End Sub
    Ensuite on gère l'événement "Après MAJ" des contrôle HeureDeb et HeureFin.
    Il se produit lorsqu'on quitte le contrôle, si on écrit dedans.
    Le code va réinjecter l'heure dans le champ date.
    Pour HeureDeb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub HeureDeb_AfterUpdate()
    If IsDate(Me.HeureDeb) And IsDate(Me.DateDeb) Then
    Me.DateDeb = DateSerial(Year(Me.DateDeb), Month(Me.DateDeb), Day(Me.DateDeb)) + _
               TimeSerial(Hour(Me.HeureDeb), Minute(Me.HeureDeb), Second(Me.HeureDeb))
    End If
    End Sub
    Pour HeureFin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub HeureFin_AfterUpdate()
    If IsDate(Me.HeureFin) And IsDate(Me.DateFin) Then
    Me.DateFin = DateSerial(Year(Me.DateFin), Month(Me.DateFin), Day(Me.DateFin)) + _
               TimeSerial(Hour(Me.HeureFin), Minute(Me.HeureFin), Second(Me.HeureFin))
    End If
    End Sub
    A+

Discussions similaires

  1. ajouter l'heure dans les champs DATE des dashlet
    Par jejeman dans le forum SugarCRM
    Réponses: 0
    Dernier message: 07/04/2015, 10h46
  2. [ODBC] Access - Pb avec les champs Date
    Par frochard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/03/2009, 11h29
  3. Equivalent de (*) pour les champs date et num
    Par pursang25 dans le forum Access
    Réponses: 3
    Dernier message: 11/07/2006, 21h39
  4. [MySQL] utilisation de champs date et heure
    Par ultracoxy dans le forum JDBC
    Réponses: 10
    Dernier message: 29/06/2006, 13h49
  5. [SQL] un champ Timestamp ou deux champs Date et Heure?
    Par davmaster62 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/02/2006, 23h04

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