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 :

Ajout d'une valeur pour un champ


Sujet :

Bases de données Delphi

  1. #21
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    bonjour ,


    non , je ne pense pas que cela vienne de là ! il y aurait eu erreur de compilation ou de traitement .
    Beh il y a une erreur de traitement justement, le champ reste à NULL
    [EDIT] Et je continue à dire que le Post fait merder mon apply

  2. #22
    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
    ca c'est pas une erreur de traitement , c'est une mise a jour non faite
    et si tu ne fais pas un Post , pas de mise a jour .
    Si ton appli 'merde' c'est parce que le programmeur merde
    j'ai souvent fait des 'moulinettes' de ce style pour être sur de mon fait
    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. #23
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut !

    Faut penser à appeler Append (ajout), Insert (insertion) ou Edit (modification) suivi d'un post pour valider.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #24
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Un nouvel élément rentre en compte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       tmp3:=calculDate(tmp2, leJour, leMois, lAnnee, tmp1);
                                      FormGestion.TableParc.FieldByName('DATE_GARANTIE').AsDateTime:=tmp3;
                                      FormGestion.TableParc.Post;
                             showmessage(DateTimetoStr(FormGestion.TableParc.FieldByName('DATE_GARANTIE').AsDateTime));
                             FormGestion.TableParc.Next;

    La date qu'il s'affiche est 31/12/1899, qui a pour valeur NULL.

  5. #25
    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
    Donc tmp3:=0 ? ou null
    est-il testé ?
    Quid de l'idée de faire un SQL du genre

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE TABLEPARC SET DATE_GARANTIE=DATE_ACHAT + GARANTIE
    ce qui ferait grosso modo la même chose en plus efficace
    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

  6. #26
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    tmp3 est à sa valeur c'est le champ de la base qui est à NULL.
    Après j'ai déjà pensé à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TABLEPARC SET DATE_GARANTIE=DATE_ACHAT + GARANTIE
    .
    Le problème c'est qu'il ajoute la garantie aux jours et non aux années.
    Par exemple si la date d'achat est le 15/09/1999 et que la garantie est à 3 ans, la date de garantie est au final égale à 18/09/1999 et non 15/09/2002. C'est dailleurs pour ça que j'ai voulu spliter la date.

  7. #27
    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
    et comment dans notre boule de cristal on peut savoir que la valeur de garantie est en année ?
    ceci dit cela devient un problème Access et non Delphi pour ce calcul

    quant à la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    table.Open; 
    while not table.EOF do
      begin
         table.Edit;
         Table.fieldbyName('unchamp').asInteger:=1;
         Table.post;
         Table.Next; 
      end;
    table.Close;
    c'est du béton . Donc comme essai une suggestion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormGestion.TableParc.FieldByName('DATE_GARANTIE').AsDateTime:=Date;
    et si la maj du champ se fait bien , il s'agira bien du retour de fonction qui est branlant
    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

  8. #28
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Beh si tu veux quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TABLEPARC SET DATE_GARANTIE=DATE_ACHAT + GARANTIE
    Ca me rentre une date dans la abse et elles s'affichent dans la base.

    Parcontre quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FormGestion.TableParc.Open; 
    while notFormGestion.TableParc.Eof do
      begin
         FormGestion.TableParcEdit;
        mGestion.TableParc.FieldByName('DATE_GARANTIE').AsDateTime:=Date;     
    etc .....
    rien ...

  9. #29
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TABLEPARC SET DATE_GARANTIE=DATE_ACHAT + (GARANTIE*365)

    Ca marche niquel !!!!

  10. #30
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Maintenant qu'on y est, savez vous comment dans ma requete SQL je peut dire

    SELECT* WHERE (DATE_GARANTIE< (La date d'aujourd'hui) );

  11. #31
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    moi je le ferais avec un paramètre bien que le SQL (à ce que je pense) dispose d'une fonction date qui retourne la date système

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT* WHERE (DATE_GARANTIE<:date_ce_jour );
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  12. #32
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    moi je le ferais avec un paramètre bien que le SQL (à ce que je pense) dispose d'une fonction date qui retourne la date système

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT* WHERE (DATE_GARANTIE<:date_ce_jour );
    Effectivement comme en excel il ya la fonction now qui marche sous access.
    Et par la même occasion j'ai trouvé la fonction year quir récupère les années d'une date.

    Je vais essayer de faire YEAR(DATE_GARANTIE)=YEAR(DATE_ACHAT)+GARANTIE

    Pour faire une fonction plus propre, par la même occasion dans mon select je mettrais DATE_GARANTIE<:now()

    EDIT=> YEAR(DATE_GARANTIE)=YEAR(DATE_ACHAT)+GARANTIE

    Marche pas: erreur dans le update, mais <now()

  13. #33
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    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
     
                                        }
            Query1.close;
            Query1.SQL.Clear;
            req1:='UPDATE TableParc SET DATE_GARANTIE=DATE_ACHAT';
            Query1.SQL.Add(req1);
            Query1.ExecSQL;
            Query1.close;
     
            Query3.close;
            Query3.SQL.Clear;
            req3:='UPDATE TableParc SET YEAR(DATE_GARANTIE)=(YEAR(DATE_ACHAT)+GARANTIE)';
            Query3.SQL.Add(req3);
            Query3.ExecSQL;
            Query3.close;
    Me retourne Erreur SQL générale, et il s'agit de la deuxième requête.
    Et dans le message d'erreur il m'affiche également que c'est une erreur d'appel du UPDATE.

    J'ai essayé de tout mettre en une requête, avec un AND, mais la date qui s'affiche après est 31/12/1899.

    Avez-vous une idée ?

  14. #34
    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
    et bien sur , comme d'habitude tu ne donnes pas toutes les informations !!
    quelle est la valeur de REQ3
    en mode debug quelle est la valeur de Query3.SQL.Text (ligne 14)

    un peu de rigueur !

    J'ai essayé de tout mettre en une requête, avec un AND,
    qu'est ce que c'est que ça ?
    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

  15. #35
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    et bien sur , comme d'habitude tu ne donnes pas toutes les informations !!
    quelle est la valeur de REQ3

    Tu es sûr que c'est moi qui ne donne pas toutes les informations, c'est pas plutôt toi qui ne sait pas lire ?

  16. #36
    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
    OOps mais aussi quelle idée de passer par une variable

    Pour ce qui est du SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'UPDATE TableParc SET YEAR(DATE_GARANTIE)=(YEAR(DATE_ACHAT)+GARANTIE)'
    je crois bien que ce ne soit pas possible le terme de gauche doit être un champ , pas une fonction sur un champ
    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

  17. #37
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    C'est également ce que j'ai remarqué puisque c'est quand j'ajoute au terme de gauche YEAR() que ça merde.

  18. #38
    Membre à l'essai
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Je vais laisser Garantie*365

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 16
    Dernier message: 06/10/2010, 10h27
  2. Comment ajouter par défaut une valeur dans un champ?
    Par zouloute dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2008, 07h53
  3. [SQL]ajout d'une valeur au début d'un champs
    Par lifemaker2025 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/04/2007, 14h07
  4. Afficher un etat pour une valeur d'un champ
    Par merilith dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 17h45
  5. Popup ajoutant une valeur a un champ
    Par kalan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/09/2005, 15h39

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