C'est parce que tu boucles toujours sur el même enregistrement. Tu crois que l'application plante, mais c'est toi qui t'es planté. Voici le code rectifié :
Table_piece.First; While not Table_piece.Eof do begin If Table_pieceReference.value = Refe_piece then begin Nomtext.text:= Table_pieceNom.value; Stocktext.text:= inttostr(Table_pieceStock.value) ; Box_type.text:= Table_pieceType.value ; Box_marques.text:= Table_pieceMarque.value ; Prixtext.text:= inttostr(Table_piecePrix_en_Euros.value) ; //ajouter la ligne suivante si tu souhaites t'arrêter //sur le premier enregistrement trouvé break; end; //la ligne suivante a été déplacée Table_piece.Next; end;
|
En clair, tu ne déplaçais le curseur que lorsque Table_pieceReference.value = Refe_piece.
Pour améliorer la vitesse de ton application, surtout s'il s'agit de boucler sur les enregistrements, il fauvrait mieux utiliser AsInteger que de transtyper le retour d'une propriété Value qui est elle même un variant codé sur 32 octets.
Par exemple, au lieu de :
Stocktext.text:= inttostr(Table_pieceStock.value) ;
Il est plus efficace d'écrire :
Stocktext.text:= Table_pieceStock.AsInteger ;
De même :
Nomtext.text:= Table_pieceNom.value;
peut être emplacé par :
Nomtext.text:= Table_pieceNom.AsString;
May Delphi be with you