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

Bases de données Delphi Discussion :

mysql et valeur 30/12/1899 par défaut pour les dates vides


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut mysql et valeur 30/12/1899 par défaut pour les dates vides
    Bonjour ...ou plutôt Bonsoir,

    Il y a peut-être une solution toute bête que je n'ai pas trouvée ...
    Mon appli est reliée à une base mariadb.
    Lorsque j'installe des Tdbedit pour saisir et afficher des dates, toutes les dates qui ne sont pas saisies, et il peut y en avoir, sont affichées en 30/12/1899, qui, si j'ai bien compris, est la valeur 0 ou null des dates en mysql/mariadb

    Y a t il une solution ou mieux, un paramétrage ou une propriété, pour que les tdbedit restent vides lorsqu'aucune date est saisie ?

    J'ai bien trouvé une solution, mais qui est très lourde et qui doit être recommencée à chaque étape, qui consiste à passer en revue tous les composants de la form et si le champ datasource est un champ de type tdate, je l'efface ... mais c'est très lourd à gérer.

    Il doit y avoir plus simple mais je n'ai pas trouvé.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    voilà, entre autres, où passer par une requête rend la vie plus facile
    par exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(purchase_date,CURRENT_DATE()) DATEACHAT FROM purchases
    donnera la date du jour sur le serveur BDD

    Sinon, il faut un peu plus de détails. J'ai déduit qu'il s'agissait d'un programme VCL (à cause du DBEdit) mais qu'en est-il :

    • du type de colonne contenant la date, et de sa valeur par défaut indiquée ie. une définition de colonne 'purchase_date` DATE NULL DEFAULT curdate()
    • du composant utilisé pour accéder aux données Firedac, ADO .. ?
    • Quelque soit le composant on peut souvent définir les champs et la définition des champs permet souvent de définir pour chaque le format d'affichage (DisplayFormat) et sa valeur par défaut (DefaultExpression dans le cas de Firedac) fort pratique en cas d'insertion de lignes
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    J'ai tout un tas de date dans une fiche client pour des validités sur différents items

    finalement j'ai trouvé une solution (vers 3h30 !) en mettant dans un événement gettext sur tous les champs considérés du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TableChampDateGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
    //=0 pour dsedit et isnull pour dsinsert
    if (Sender.value=0) or (sender.IsNull) then
       Text := ''
    else
       Text := FormatDateTime('dd/mm/yyyy', Sender.Value);
    end;
    et pour l'instant ça fonctionne ...

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    j'inverserai le test avec IsNull avant de lire la valeur (circuit court, la valeur ne sera pas calculée si le champ est nul), et pour les dates j'ai pris l'habitude de tester "AsDateTime < 1" car les TDateTime sont des double, et avec les virgules flottantes il faut toujours se méfier des tests d'égalité car le nombre est toujours une approximation et pas une valeur certaine.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Merci pour ces excellents conseils de bon sens
    Je vais corriger de ce pas.
    Mais en principe un TDate n'a pas de partie décimale ?
    Cependant par sécurité je vais mettre inférieur à 1
    Merci encore

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

Discussions similaires

  1. [XL-2010] Retourner une valeur par défaut dans les cellules vides
    Par aalex85 dans le forum Excel
    Réponses: 4
    Dernier message: 22/10/2015, 16h22
  2. [1.x] Valeur par défaut pour les champ type Boolean
    Par Niki59 dans le forum Symfony
    Réponses: 0
    Dernier message: 28/04/2011, 14h55
  3. problème avec média player par défaut pour les vidéos ?
    Par tomguiss dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/10/2005, 14h08
  4. Réponses: 6
    Dernier message: 28/09/2004, 16h47

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