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 :

Comment puis-je convertir champ smallint au champ date


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut Comment puis-je convertir champ smallint au champ date
    S.V.P
    version delphi7 et absolute database

    Comment puis-je transférer les données des trois champs pour le type de données d'un champ smallint de type Date
    exemple :
    les champ comme suite :
    1 champ s'appel An type smallint compris les données 09
    2 champ s'appel Mois type smallint compris les données 06
    3 champ s'appel Jour type smallint compris les données 03

    le champ de transfere s'appel DT_debut type date leur données qui je veux c'est à la façon de : 03/06/2009
    et merçi bccp

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut


    Tu n'as pas cherché longtemps ! tu pourrais lire la documentation de Absolute DB ! et les exemples

    Par Delphi, tu lis la table et les trois champs, tu utilises EncodeDate pour générer le TDateTime pour DT_debut

    Par Absolute, il existe une fonction ToDate ou CONCAT, ensuite, il te suffit d'utiliser le format ISO "YYYY-MM-DD HH:MM:SS" pour insérer la date en SQL
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE table SET DT_debut = TODATE(Jour || '/'  || Mois || '/'  || An , 'dd/mm/yyyy')
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message


    [/CODE]
    bonjour
    J'ai essayé plusieurs fois n'a pas réussi
    C'est le code que vous avez utilisé
    Mais n'a pas bien fonctionné
    Le champ Dt_Soustrie type date
    et les autres champ type smallint

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.BitBtn3Click(Sender: TObject);
    var MyDate: TDateTime;
    an,Mois,Jour:string;
    begin
    an:=inttostr(table1An_04.asinteger);
    Mois:=inttostr(table1Mois4.asinteger);
    Jour:=inttostr(table1Jour4.asinteger);
     
      table1.Edit;
      MyDate := SysUtils.EncodeDate(StrToInt(An), StrToInt(Mois), StrToInt(Jour));
      table1['Dt_Soustrie']:=DateToStr(MyDate);
      table1.Post;
    end;

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    "Pourquoi faire simple quand on peut faire compliqué" c'est ta devise ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.BitBtn3Click(Sender: TObject);
    var MyDate: TDateTime;
    //an,mois,jour : String;
    begin
    // S'il faut vraiment convertir 
    //an:=table1An_04.asString;
    //Mois:=table1Mois4.asString;
    //Jour:=table1Jour4.asString;
     
    table1.Edit;
      MyDate := SysUtils.EncodeDate(table1An_04.asinteger,table1Mois4.asinteger, table1Jour.asinteger);  
      table1['Dt_Soustrie']:=MyDate;  
      table1.Post;
    end;
    PS. Il faudra peut être
    Vérifier le résultat de EncodeDate , la partie année pourrait causer certains pbs si elle n'est que sur 2 chiffres (ca me rappelle le bon vuieux bug de l'an 2000)
    si le champ dt_soustrie est de type date alors table1['Dt_Soustrie']:=mydate;
    sion plutôt que datetoStr je prefére le FormatDateTime
    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

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je me méfie toujours de l'accès via [], je lui préfère FieldByName et un accès fortement typé !
    En plus pourquoi affecter un string à un variant alors que tu pourrais lui affecter directement le TDateTime !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.FieldByName('Dt_Soustrie').AsDateTime :=  SysUtils.EncodeDate(table1An_04.AsInteger, table1Mois4.AsInteger, table1Jour.AsInteger);
    tu as changé de champ en cours de route ? DT_debut ? Dt_Soustrie ?

    As-tu essayé la version SQL ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je me méfie toujours de l'accès via [], je lui préfère FieldByName et un accès fortement typé !
    En plus pourquoi affecter un string à un variant alors que tu pourrais lui affecter directement le TDateTime !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.FieldByName('Dt_Soustrie').AsDateTime :=  SysUtils.EncodeDate(table1An_04.AsInteger, table1Mois4.AsInteger, table1Jour.AsInteger);
    tu as changé de champ en cours de route ? DT_debut ? Dt_Soustrie ?

    As-tu essayé la version SQL ?
    Merci beaucoup
    mais
    J'ai utilisé deux méthodes, mais il ya un message d'erreur qui dit que je ne comprenais pas pourquoi

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    C'est pourtant écrit dans la documentation de EncodeDate :
    Citation Envoyé par "Embarcadero - SysUtils.EncodeDate
    L'année doit être comprise entre 1 et 9999.

    Les valeurs Month valides vont de 1 à 12.

    Les valeurs Day valides vont de 2 à 28, 29, 30 ou 31, selon la valeur de Month. Par exemple, les valeurs possibles de Day pour le mois 2 (février) vont de 1 à 28, ou de 1 à 29 dans le cas d'une année bissextile.

    Si les valeurs indiquées sont en-dehors de ces limites, EncodeDate déclenche une exception EConvertError.
    Si tu ne lis pas la documentation, comment veux-tu comprendre les messages d'erreur !


    C'est l'une des 3 valeurs qui est incorrectes !
    Un zéro par exemple à cause d'une valeur nulle !

    Ce n'est pas un problème de la DB, mais un problème d'EncodeDate !
    Comme par maîtrisé le retour de EncodeDate, ensuite on passera à la DB !
    Faudrait déjà réglé celà !




    Et la version SQL ? Si tu l'as essayé, que donne-t-elle ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je me méfie toujours de l'accès via [], je lui préfère FieldByName et un accès fortement typé !
    En plus pourquoi affecter un string à un variant alors que tu pourrais lui affecter directement le TDateTime !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.FieldByName('Dt_Soustrie').AsDateTime :=  SysUtils.EncodeDate(table1An_04.AsInteger, table1Mois4.AsInteger, table1Jour.AsInteger);
    +1 , je n'étais pas allé jusqu'au bout
    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

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    @SergioMaster, en même temps, il semble d'après le EConvertError commniqué par medreg, ce n'est pas un problème d'affectation mais un problème de conversion !

    Donc que ce soit [] impliquant une conversion TDateTime\Variant ou FieldByName\AsDateTime, faudrait déjà passer de bonnes valeurs à EncodeDate

    D'ailleurs Table1 c'est bien un TABSTable ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    @SergioMaster, en même temps, il semble d'après le EConvertError commniqué par medreg, ce n'est pas un problème d'affectation mais un problème de conversion !

    Donc que ce soit [] impliquant une conversion TDateTime\Variant ou FieldByName\AsDateTime, faudrait déjà passer de bonnes valeurs à EncodeDate

    D'ailleurs Table1 c'est bien un TABSTable ?
    S.V.P
    Voila mon petit programme pour m'aidez
    puis je vous demande de me faire le code pour la date d'application
    date d'application egal le premier jour du mois suivant de la date de soustrie
    exemple si la date de soustrie égale 30/06/2010 dans ce cas, la date d'application est 01.07.2010
    s.v.p aidez mois a cette operation.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Quel souk !!!! pas étonnant que l'on trouve des erreurs de conversion !! les résultats des 3 fonctions que j'ai eu le courage de lire sont certainement problématiques

    Delphi 7 n'aurait-il pas une unité DateUtils ? j'ai beau essayé j'ai un problème pour le lancer aujourd'hui

    qu'importe , un petit code D3 fera l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function dateDebutMoisSuivant(D1: TDate) : TDate; 
    var aa,mm,jj : word;
    begin
    Decodedate(date,aa,mm,jj);
    jj:=1;
    mm:=mm+1;  // j'aurais aussi pu mettre inc(mm);
    if mm=13 then
      begin
        aa:=aa+1; // j'aurais aussi pu mettre inc(aa);
        mm:=1;
      end;
    result:=encodedate(aa,mm,jj);
    end;
    ps : Les fonctions peuvent retourner autre chose que des String
    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

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Delphi 7 n'aurait-il pas une unité DateUtils ? j'ai beau essayé j'ai un problème pour le lancer aujourd'hui
    IncMonth c'est même dans SysUtils !
    D7 possède bien DateUtils dont la fonction StartOfAMonth et la fonction EndOfAMonth



    Citation Envoyé par medreg Voir le message
    puis je vous demande de me faire le code pour la date d'application
    Nous t'aidons par bonne volonté, évite d'exiger que l'on fasse TON boulot !
    Nous voulons bien t'expliquer du code, t'orienter vers telle ou telle fonction mais en aucun cas, on fera le travail à ta place !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Quel souk !!!! pas étonnant que l'on trouve des erreurs de conversion !! les résultats des 3 fonctions que j'ai eu le courage de lire sont certainement problématiques

    Delphi 7 n'aurait-il pas une unité DateUtils ? j'ai beau essayé j'ai un problème pour le lancer aujourd'hui

    qu'importe , un petit code D3 fera l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function dateDebutMoisSuivant(D1: TDate) : TDate; 
    var aa,mm,jj : word;
    begin
    Decodedate(date,aa,mm,jj);
    jj:=1;
    mm:=mm+1;  // j'aurais aussi pu mettre inc(mm);
    if mm=13 then
      begin
        aa:=aa+1; // j'aurais aussi pu mettre inc(aa);
        mm:=1;
      end;
    result:=encodedate(aa,mm,jj);
    end;
    ps : Les fonctions peuvent retourner autre chose que des String
    Je vous remercie beaucoup,
    mais mon frère Seulement, je vous souhaite mettre cette fonction dans l'exemple dont il avait attaché

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    IncMonth c'est même dans SysUtils !
    D7 possède bien DateUtils dont la fonction StartOfAMonth et la fonction EndOfAMonth
    Nous t'aidons par bonne volonté, évite d'exiger que l'on fasse TON boulot !
    Nous voulons bien t'expliquer du code, t'orienter vers telle ou telle fonction mais en aucun cas, on fera le travail à ta place !
    Je sais que c'est censé d'essayer de faire plus de ce sur mes propres avec votre aide bien sûr
    Mais mon frère, Notez que je ne suis pas un programmeur n'a pas étudié le langage de programmation ou même la façon de traiter avec l'ordinateur
    Mais toutes les informations lui obtenues dans le domaine de la programmation a été juste par curiosité
    Donc je ne peux pas me donner tout ce qui l'absorbaient, si il ya un exemple prêts
    Je vous remercie et vous remercie de tous vos main avec moi,
    Je vous respecte, et votre désir d'apprendre que la personne signifie son, donc je souhaite que je suis dans votre collaboration avec moi sur Modification, dans l'exemple qu'il avait attaché à vous
    Vous et moi une grande satisfaction et le respect

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut


    Je n'ai pas tout compris, même en phonétique !

    Tu es amateur, OK, pas de soucis, je comprends tes difficultés, tu sembles en avoir autant en français !

    SergioMaster t'a fourni une fonction qui fait exactement le passage de 30/06/2010 au 01/07/2010
    Tu es mieux placé que nous pour savoir ce que tu veux en faire !
    Tout nous passe un code, on ne sait pas ce qu'il fait et ce qu'il doit faire, on peut t'aider sur un point précis mais pas beaucoup plus !

    De plus, le sujet s'écarte !
    Au départ, c'est la conversion de 3 champs Int vers un champs Date, maintenant c'est une fonction de manipulation de date, on ne sait même pas si le problème d'origine est résolu ?
    Comme le faisait remarquer SergioMaster, il fallait un passage de 09 à 2009

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.FieldByName('Dt_Soustrie').AsDateTime :=  SysUtils.EncodeDate(YearPad(table1An_04.AsInteger), table1Mois4.AsInteger, table1Jour.AsInteger);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function YearPad(AYear: Word): Word;
    begin
      if AYear <= 49 then
       Result := 2000 + AYear
      else
        if AYear <= 99 then
          Result := 1900 + AYear
        else
          Result := AYear;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  16. #16
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message


    Je n'ai pas tout compris, même en phonétique !

    Tu es amateur, OK, pas de soucis, je comprends tes difficultés, tu sembles en avoir autant en français !

    SergioMaster t'a fourni une fonction qui fait exactement le passage de 30/06/2010 au 01/07/2010
    Tu es mieux placé que nous pour savoir ce que tu veux en faire !
    Tout nous passe un code, on ne sait pas ce qu'il fait et ce qu'il doit faire, on peut t'aider sur un point précis mais pas beaucoup plus !

    De plus, le sujet s'écarte !
    Au départ, c'est la conversion de 3 champs Int vers un champs Date, maintenant c'est une fonction de manipulation de date, on ne sait même pas si le problème d'origine est résolu ?
    Comme le faisait remarquer SergioMaster, il fallait un passage de 09 à 2009

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.FieldByName('Dt_Soustrie').AsDateTime :=  SysUtils.EncodeDate(YearPad(table1An_04.AsInteger), table1Mois4.AsInteger, table1Jour.AsInteger);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function YearPad(AYear: Word): Word;
    begin
      if AYear <= 49 then
       Result := 2000 + AYear
      else
        if AYear <= 99 then
          Result := 1900 + AYear
        else
          Result := AYear;
    end;

    Marié à mon frère de faire est
    Je veux que le reste de l'année et des mois et des jours autorisés dans les champs An_04, Mois4, Jour4
    La Première demande
    Par Exemple Le reste c'est 02 ans et 05 mois et 00 jours
    Ce qui est nécessaire est transféré en tdate de cette forme 00-05-0002
    Et de placer le résultat dans le champ Dt_Soustrie de type Date.

    deuxième demande
    Par exemple
    Date de champ DT_02.asdatetime = 31-12-2010
    Date de champ Dt_Soustrie.asdatetime = 00-05-0002
    Après que nous obtenions la différence entre les deux dates c'est 31-07-2008
    Cette différence est que nous mettre dans un autre Champ nommé Dernier_datePointer.asdatetime.

    La troisième demande
    Le champ Dt_Application.asdatetime = premier jour du mois après la date de de champ Dernier_DatePointer.asdatetime
    exemple
    date de champ Dernier_DatePointer.asdatetime=31-07-2008
    resultat demander c'est le champ Dt_Application.asdatetime = 01-08-2008
    voila mr tous que je besoin
    et merci d'avance et pour tout

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par medreg Voir le message
    Je vous remercie beaucoup,
    mais mon frère Seulement, je vous souhaite mettre cette fonction dans l'exemple dont il avait attaché
    faut pas pousser
    La Première demande
    Par Exemple Le reste c'est 02 ans et 05 mois et 00 jours
    Ce qui est nécessaire est transféré en tdate de cette forme 00-05-0002
    Et de placer le résultat dans le champ Dt_Soustrie de type Date.
    ce ne peux pas être une date .
    La troisième demande
    Le champ Dt_Application.asdatetime = premier jour du mois après la date de de champ Dernier_DatePointer.asdatetime
    exemple
    date de champ Dernier_DatePointer.asdatetime=31-07-2008
    resultat demander c'est le champ Dt_Application.asdatetime = 01-08-2008
    voila mr tous que je besoin
    et merci d'avance et pour tout
    ça c'est déjà donné.
    deuxième demande
    Par exemple
    Date de champ DT_02.asdatetime = 31-12-2010
    Date de champ Dt_Soustrie.asdatetime = 00-05-0002
    Après que nous obtenions la différence entre les deux dates c'est 31-07-2008
    Cette différence est que nous mettre dans un autre Champ nommé Dernier_datePointer.asdatetime.
    Quelle mauvaise réflexion pour en arriver au point 3
    Il faut revoir toute la procédure et même si l'on approche de noël , je ne suis pas le pére noël .
    Tout les élements sont dans nos posts !
    je décrémente encore ce sujet
    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

  18. #18
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    Je suis encore de votre aide pour les plus nécessiteux
    Que vous effectuez une modification de l'exemple
    Je suis fatigué de tentatives n'a pas réussi à l'un d'eux
    J'apprécie que vous et votre travail avec moi

  19. #19
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Demande 1 : "00-05-0002" Impossible, 00 n'est pas une valeur admise par le TDateTime,
    tu ne pourras JAMAIS l'obtenir d'où le EConvertError

    Demande 2 : on a déjà répondu à une question similaire,
    il y a de cela 2 semaines : calculer le nombre de jour,moi,annee entre deux dates

    Demande 3 :
    Inclure DateUtils dans les uses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dt_Application.AsDateTime :=  StartOfAMonth(IncMonth(Dernier_DatePointer.AsDateTime ));
    Ton sujet n'avait aucun rapport avec la Base donnée en réalité, juste des notions basique sur le type TDateTime !
    Tu nous a faire perdre du temps dans des détails inutiles !

    Nous aussi nous sommes fatigué !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  20. #20
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 82
    Points : 0
    Points
    0
    Par défaut
    bonjour
    j'ai un problème
    Pourquoi ne pas accepter le mois égal à 30 jours
    Tous les mois, ce qui est égal à 31 jours acceptés sauf pour le mois d'Avril et Juin, Septembre et Novembre
    voila le code qui j'ai utilisé

    le code marche bien mais le problème pour le mois de 30 jour
    svp S'il vous plaît inclure votre date du 01/04/2004
    En Date_01
    Et vous allez voir ce qui se passe

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/07/2015, 23h43
  2. Comment puis-je convertir un timestamp en format normal
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 07/01/2015, 09h20
  3. Réponses: 2
    Dernier message: 28/12/2009, 23h35
  4. Réponses: 2
    Dernier message: 21/08/2008, 12h46
  5. Réponses: 4
    Dernier message: 01/02/2008, 21h12

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