Maj d'un champ

Résolu
Willos78 Messages postés 27 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 23 janvier 2008 - 6 déc. 2007 à 12:02
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 10 déc. 2007 à 19:54
bonjour,
je cherche à mettre à jours un champs d'une table sachant que il doit appartenir au dernier enregistrement.
J'ai essayé cecci mais ça ne marche pas car pb de type je pense.
Pourriez vous m'aider ?

mon code
procedure majnbordre(nb:integer);
begin
DataModulepmr.ADOTableFichier.Active := true ;
DataModulepmr.ADOTableFichier.Last;
DataModulepmr.ADOTableFichierC_ficnombreordre.AsString := IntToStr(nb);
DataModulepmr.ADOTableFichier.Active := false ;
end;

il n'accepte pas Last.

Merci

willos

4 réponses

Willos78 Messages postés 27 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 23 janvier 2008
6 déc. 2007 à 14:34
re

en faite mon Datamodule je le déclarais et le détruisais dans une autre procédure donc plus accessible à mes bidouilles

note j'avais oublié deux lignes importantes aussi celle du edit et du post

DataModulepmr.ADOTableFichier.Last;
DataModulepmr.ADOTableFichier.Edit;
DataModulepmr.ADOTableFichierC_ficnombreordre.AsString := IntToStr(nb);
DataModulepmr.ADOTableFichier.Post;
DataModulepmr.ADOTableFichier.Active := false ;

Bonne continuation
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 déc. 2007 à 17:57
Méfie toi qd même du last, car sur une table non triée, on a pas forcément le dernier...

cantador
3
Willos78 Messages postés 27 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 23 janvier 2008
10 déc. 2007 à 17:56
Hello merci de ton avertissement
du coup j'ai fait ça :

ADOTableFichier.Active := true;
adoquery1.SQL.Clear;adoquery1.sql.add('update T_fichier set C_ficnombreordre ' + IntToStr(nb)+ ' where C_fichorodate '+QuotedStr(date)+'');
adoquery1.ExecSQL;

comme mon champ C_fichorodate est ma clé primaire je suis sur de mettre à jours la bonne ligne
.

Merci
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
10 déc. 2007 à 19:54
un dernier conseil..
n'utilises pas de champ de type date en clé primaire.
Toutes tes clés doivent être en integer..
et utilises ensuite un autre champ pour stocker tes dates..
de cette manière les relations entre les tables se font d'entier à entier
ce qui laisse de la souplesse pour les chps libellés par exemple.
on peut en changer sans changer de clé.
etc etc..


ton update serait de ce fait encore plus sécurisé..
çà te permettrait aussi de gérer plusieurs données à la même date.

@+

cantador
0
Rejoignez-nous