M.a.j d'un champ de table sur modification d'un autre champ

dc46
Messages postés
20
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
7 juillet 2022
- 6 juil. 2022 à 15:29
cs_yanb
Messages postés
271
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
7 juillet 2022
- 7 juil. 2022 à 15:30
Bonjour,
J'ai une table contenant une colonne de valeur d'achat d'un produit, et une colonne contenant la date d'entrée de ce produit.

Je voudrai quand je valide la valeur du produit que la date d'entrée se mette à jour avec la date en cours.
Quelle est la meilleur et donc la plus simple des solutions pour réaliser cela.
Je suis désolé de poser une question surement basic, mais à 70ans les neurones ne fonctionnent pas toujours au top.
Merci à celles ou ceux qui voudront bien m'aider.

5 réponses

cs_yanb
Messages postés
271
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
7 juillet 2022
13
Modifié le 7 juil. 2022 à 11:21

Salut, tout dépend du type de valeur que la base attend, les composants utilisés, il y a plein de solutions, on peut utiliser les fonctions Format, FormatDateTime, StrToDateTime, StrToDate, DateTimeToStr, requête SQL etc... par exemple...

Label1.Caption :=FormatDateTime('dd"/"mm"/"yyyy',Now);
ADOQuery.Parameters.ParamByName('V1').DataType := ftDate;
ADOQuery.Parameters.ParamByName('V1').Value := Now;

@+

0
dc46
Messages postés
20
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
7 juillet 2022

7 juil. 2022 à 11:38

Merci cs_yanb pour ta réponse mais j'ai dû mal formuler ma question. Je sais formatter et ecrire la valeur date correctement dans son champ.

Ce que je cherche c'est quel événement me permet de savoir que la valeur d'achat du produit vient d'être modifier pour déclancher l'ecriture de la date.

Merci encore.


0
cs_yanb
Messages postés
271
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
7 juillet 2022
13
Modifié le 7 juil. 2022 à 14:25

En règle générale avec les événements BeforePost, BeforeEdit, AfterPost, AfterEdit,etc...de TFDQuery, TAdoQuery, ...qui agissent sur le DataSet.

Tu devrais pouvoir changer la date d'achat en comparant les valeurs d'achat avant l’événement Post / Edit et après...il te faut juste avoir une variable ou un record de la clé primaire et de la valeur d'achat avant et après ou une copie du Fields ou ...(c'est des exemples de solution)

Après pourquoi ne pas changer la date en même temps que le Edit de la nouvelle valeur d'achat...

procedure TForm1.FDQueryAfterEdit(DataSet: TDataSet);
begin
  FDQuery.FieldByName('Date_Achat').Value := FormatDateTime('dd"/"mm"/"yyyy',Now);
end;

@+

0
dc46
Messages postés
20
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
7 juillet 2022

7 juil. 2022 à 14:23

Bonjour.

Je vais faire des essais avec AfterPost et AfterEdit.

pou l'instant l'utilisateur saisie la date après avoir saisie la valeur. Le fait de valider la date sur le changement de la valeur d'achat ù'assure que l'utilisateur n'oubliera pas de saisir la date.

merci


0
cs_yanb
Messages postés
271
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
7 juillet 2022
13
Modifié le 7 juil. 2022 à 15:06

Oui donc c'est dans le style de l'exemple que je viens de mettre :p faut juste vérifier qu'on est bien sur la modification de la valeur d'achat...sinon à l'arrache sans que l'utilisateur mette la date...J'ai pas testé le code ci-dessous, mais comme ca, ceci doit être transparent pour l'utilisateur avec BeforeEdit et BeforePost...A toi d'adapter vraiment au besoin...

var
  ValAchatAvant: string;
  ValAchatApres: string;

procedure TForm1.FDQueryBeforeEdit(DataSet: TDataSet);
begin
  ValAchatAvant := IntToStr(FDQuery.FieldByName('Val_Achat').Value);
end;

procedure TForm1.FDQueryBeforePost(DataSet: TDataSet);
begin
  ValAchatApres := IntToStr(FDQuery.FieldByName('Val_Achat').Value);
  if ValAchatAvant <> ValAchatApres then
    FDQuery.FieldByName('Date_Achat').Value := FormatDateTime('dd"/"nn"/"yyyy hh":"mm":"ss',Now);
end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yanb
Messages postés
271
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
7 juillet 2022
13
7 juil. 2022 à 15:30

Je vais faire des essais avec AfterPost et AfterEdit.

attention avec le AfterPost il va falloir remettre le DataSet en Edition/Insertion...si vous voulez modifier.

@+

0