Salut,
Softer47: essaie cette syntaxe: Locate('date;id_races', VarArrayOf([date, id_races]), []). Le 1° paramètre doit être séparé par des ';' et pas des ','. Et dans le cas d'une recherche sur plusieurs champs, le 2° paramètre est un tableau de Variant.
ptite suggestion: tu pourrais faire un truc du style:
if Locate('date;id_races', VarArrayOf([date, id_races]), []) then
begin //on a trouvé: Locate renvoie True et nous positionne sur l'enr. recherché
edit;
...
end
else //on n'a pas trouvé: Locate renvoie False et le curseur du DataSet reste au même endroit
begin
insert;
...
end;
ça te permettra de voir tout de suite (en debug) si tu as trouvé ton enregistrement.
Dans ton code tu cherches l'enregistrement, mais si tu ne le trouves pas (Locate renvoie False), tu te mets quand même en Edit pour modifier l'enregistrement courant (celui sur lequel tu étais positionné avant d'appeler Locate, par exemple le premier!).
Je pense que ça règlera ton pb.
Othland: j'arrive certainement un peu (beaucoup) tard, mais bon... je ne travaille jamais avec des types char, mais à tout zazard, tu pourrais essayer de caster ta variable "chaine" en Variant, ou peut-être en char(10).
Voilou!
@+.