Rang (Classement) avec ADOQuery. [Résolu]

mtaallah 30 Messages postés lundi 10 décembre 2001Date d'inscription 13 décembre 2006 Dernière intervention - 8 nov. 2006 à 23:56 - Dernière réponse : mtaallah 30 Messages postés lundi 10 décembre 2001Date d'inscription 13 décembre 2006 Dernière intervention
- 9 nov. 2006 à 11:06
Salut à tous,
   j'essaye d'effectuer un certain rangement (classement) pour les valeurs d'un champ au sein d'un ADOQuery,
   La procédure se fait en clquent sur un bouton:













procedure TForm1.BitBtn1Click(Sender: TObject);
var
    i: integer;
begin
    i:=1;
     ADOQuery1.Active:= False;
     ADOQuery1.SQL.Text:='Select * From Releve Order by Note DESC';
     // Releve: nom de la table dans ma base de données access
     // Note: nom du champ contenant des integers
     ADOQuery1.Active:= True;
     // --> Jusque là, tout est reglo... le DBGrid affiche les valeurs ordonnés.
     ADOQuery1.Edit;
     ADOQuery1.First;
     While not ADOQuery1.Eof do
         Begin
               ADOQuery1.FieldByName('NRang').AsInteger:= i;
               //NRang: champ vide où sera donné le classement 1,2,3... des notes
               i:=i+1;
               ADOQuery1.Next;
               //--> Il ne m'intéresse pas que les doublons n'auront pas le même rang
               //--> Ce problème ce reglé après
         End;
end;




le problème c'est qu'il m'affiche un message:



           ADOQuery1: Dataset not in edit or insert mode

Merci
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 9 nov. 2006 à 00:09
3
Merci
Cela provient des deux lignes suivantes :
     ADOQuery1.Edit;
     ADOQuery1.First;
Dans un premier temps, tu places l'ensemble de données en mode édition. Hélas, l'appel de la méthode First place ce même ensemble de données en mode dsBrowse.
Voici la correction :
ADOQuery1.First;
     
      While not ADOQuery1.Eof do
       Begin
            ADOQuery1.Edit;
            ADOQuery1.FieldByName('NRang').AsInteger:= i;
               //NRang: champ vide où sera donné le classement 1,2,3... des notes
               i:=i+1;
               ADOQuery1.Next; // /!\ provoque un post implicite !
               //--> Il ne m'intéresse pas que les doublons n'auront pas le même rang
               //--> Ce problème ce reglé après
         End;

Désolé si j'ai un peu massacré la mise en page
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
mtaallah 30 Messages postés lundi 10 décembre 2001Date d'inscription 13 décembre 2006 Dernière intervention - 9 nov. 2006 à 00:27
0
Merci
Salut,
   Grand Grand Merci pour vous DelphiProg
   Vous m'avez gangné beaucoup de temps en recherche...
   ça marche 100%
juste une prtite autre explication:



          ADOQuery1.Next; // /!\ provoque un post implicite !
Qu'est ce que ça veut dire... (un POST implicite)
Commenter la réponse de mtaallah
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 9 nov. 2006 à 08:55
0
Merci
Quand tu es en mode édition et que tu changes d'enregistrement (First, Previous, Next, Last), l'état de l'ensemble de données change et passe à dsBrowse après avoir validé les données de l'enregistrement en cours de modification. Ce qui revient à faire un appel à la méthode Post mais sans le faire explicitement.
Lorsque l'enregistrement courant n'a pas encore été modifié, cela revient à appeler la méthode Cancel, là aussi de manière implicite. Et c'était justement ton problème au niveau de :
     ADOQuery1.Edit;
     ADOQuery1.First;
Dans le code qui suivait, tu n'étais plus en mode édition comme tu le croyais.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net
Commenter la réponse de cs_Delphiprog
mtaallah 30 Messages postés lundi 10 décembre 2001Date d'inscription 13 décembre 2006 Dernière intervention - 9 nov. 2006 à 11:06
0
Merci
OK!
    Tout est reglé...
    Tout est compris...
Grand Grand  MERCI
Commenter la réponse de mtaallah

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.