Mise a jour d'un record a partir d'un stringgrid Question voir mon code

Signaler
Messages postés
86
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
3 septembre 2007
-
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006
-
bonjour j'ecris un petit soft pour petit besoin avec des record
et j'ai une commande qui ce trouve dans une stringgrid
et j'aimerai mettre a jour mon fichier de stock

alors ma demarche etait de faire un for qui boucle de 1 a X Ligne du stringgrid et dans ce for faire un while sur le fichier qui boucle jusqu'a avoir atteind la fin du fichier en testant le numero de serie de l'article et en mettant la quantite a jour de l'article

mon probleme est que cela fonctionne si je vend un article mais si j'en vend plusieur il ne passe pas dans le while pourtant je pense que mes condition sont bonne .

if FileExists('L:\Gestion-stock\data-fic\StockLL.dat') then
begin



assignFile(Fichier,'L:\Gestion-stock\data-fic\StockLL.dat');
reset(fichier);
// strcpt variable qui va parcourrir le tableau permettant
// de changer les variables


for strcptgrid2:=1 to (stringgrid2.RowCount) do
begin


// le while va parcourir tout le fichier de a a z en effectuant le test
recpos:=0;
while (not eof(fichier)) do
begin
// strcpt variable qui va parcourrir le tableau permettant
// de changer les variables
read(fichier,dencode);
if dencode.serie=stringgrid2.Cells[1,strcptgrid2] {and (dencode.emplacement=stringgrid2.Cells[4,strcptgrid2]) } then
begin
showmessage('passage dans la boucle while valeur '+inttostr(strcptgrid2));
recpos:=filepos(fichier); // si teste ok alors prendre la position du pointeur
seek(fichier,recpos+1); // placement du pointeur sur le record a modifier
buffercal:=strtoint(dencode.qt)-strtoint(stringgrid2.Cells[5,strcptgrid2]);
// Remplissage du buffer
dencode.qt:=inttostr(buffercal);
dencode.serie:=stringgrid2.Cells[1,strcptgrid2]; // nous allons tester cet valeur avec
dencode.description:=stringgrid2.Cells[2,strcptgrid2];
dencode.taille:=stringgrid2.Cells[3,strcptgrid2];
dencode.emplacement:=stringgrid2.Cells[4,strcptgrid2]; // l'emplacement comme cela si il y a plusieur emplacement avec le meme code
dencode.prix:=stringgrid2.Cells[6,strcptgrid2];
dencode.date:=dencode.date;
write(fichier,dencode);
end;


end;


end;
showmessage('numeraux de serie article non trouver');
end;
closefile(fichier);
end;

merci d'avance pour votre aide

1 réponse

Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Que donne comme valeur eof(fichier) après avoir effectué le write(fichier,dencode) ?

Est-ce que tu n'es renvoyé à la fin du fichier et alors la condition du while n'est plus valable.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans