begin process at 2008 08 28 13:59:59
1 233 106 membres
213 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE [ Base de données / Autre ] (Zicson1)

COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 01/07/2008 16:40:15

Zicson1
Mon application contient des scriptes qui  permet le calcul  des  moyennes trimestrielles et annuelles par étudiant, affiche les  moyennes  coéfficiées  le  total  voir  toutes  les  informations relatives à un bulletin scolaire mais le problème, je dois fournir le classement des étudiants par classe en fonction de leur moyennes trimestrielle et si une moyenne quelconque arrivait à être modifier, le classement devrait changé automatiquement pour établir l'ordre.

Par exemple: voici une suite de moyenne: 10, 14, 09, 17, 11. (champ MOYENNE)
pour le classement:
- 1er pour l'étudiant qui a 17
- 2ème pour l'étudiant qui a 14
- 3ème pour l'étudiant qui a 10
- 4ème pour celui qui a 09

Je precise que j'utilise INTERBASE 6.0 comme serveur et DELPHI 7 comme langage AGL et WINDOWS XP SP2 comme OS et j'utilise les composants IBDATASET ET IBQUERY pour mes requêtes SQL.

j'ai essayé ceci :
Select MOYENNE from TMOYENNE
Where NUMERO_CLASSE=:NUMCLASSE
Order By MOYENNE DESC;

Avec ça, les moyennes sont classées par ordre décroissant de la plus grande moyenne à la plus petite comme souhaité mais je n'arrive pas à recuperer l 'ordre 1, 2, 3...des lignes d'emplacement des numeros.

voici un autre que j'ai éssayé et qui ne passe pas:
SelectCOUNT (distinct MOYENNE ) As RANG from TMOYENNE
Where NUMERO_CLASSE=:NUMCLASSE
Order By MOYENNE DESC;

Ici à l'execution cela me donne 1.

Aidez moi SVP

ful

Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 01/07/2008 20:47:47

cantador
Membre Club

Salut,

avec un script çà va être dur..
je verrais mieux :
créer un champ ORDRE (integer) dans la table TMoyenne
et
déclencher un UPDATE sur le champ ordre :

 UPDATE TMOYENNE
 SET TMOYENNE.ORDRE = TMOYENNE.ORDRE + 1
 Order By MOYENNE DESC;

J'ai pas testé..

En tout cas le COUNT ne peut pas fonctionner puisque lui compte les enregistrements de la requête alors que toi tu souhaites introduire un incrément
du champ MOYENNE en ordre décroissant.

restera ensuite l'affichage, mais là un simple select et c'est gagné..

cantador


Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 01/07/2008 22:51:09

cantador
Membre Club

Ne pas oublier aussi gérer la remise à zéro du champ ORDRE..

hummhhhh Zicson1, çà me dit quelquechose..

cantador


Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 03/07/2008 17:51:26

Zicson1
Je ne te comprend pas!, soit precis et concis, c'est vrais que tu as proposer un update qui est d'ailleurs évident mais malheusement inconprehensile, j'aurais souhaité que tu arrives au bout de ta methéde.

Le update est cré où, comme procedure sur interbase ou au sein d'un ibquery? et comment l'utilise t-on ? et comment tu le met à zéro? soit beaucoup plus explicite car je ne te comprend pas mieux. Et si tus pouvais m'expliquer comment se fait la jointure incrementable  sachant que le camps ORDRE une fois crée ne comporte aucune données et par défaut c'est la valeur nulle(0).

ful

Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 03/07/2008 21:37:55

cantador
Membre Club

ben écoutes, j'essaie simplement de me couler dans ta méthode.
Moi, je ne sais pas ce que tu veux faire exactement..
une requête SQL, tu peux la déclencher en script direct ou sans un IbQuery
comme il te plaira.
bon un p'tit query :

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  IbQuery1.Close;
  with IBQuery1.SQL do
  begin
    Clear;
    Add('UPDATE TMOYENNE  ');
    Add('SET TMOYENNE.ORDRE = TMOYENNE.ORDRE + 1 ');
    Add('Order By MOYENNE DESC ');
  end;
  IbQuery1.ExecSQL;
end;

c'était peu être évident, mais encore aurait-il fallut y penser et l'écrire...

La liaison  ?

Where NUMERO_CLASSE=:NUMCLASSE
çà c'est pas une liaison, c'est un passage de paramètre..

tu peux très bien rajouter ce WHERE dans la requête ci-dessus.

reste la remise à zéro..

je te laisse chercher un peu...

cantador


Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 04/07/2008 14:46:56

Zicson1
Ce-ci, c'est très bon à comprendre, ainsi je me retrouve et j'ai même eu le reflexe de l'adapter à d'autre composants comme le cas d'un IBUpdateSQL1 de Delphi7.

 UPDATE TMOYENNE
 SET ORDRE = :ORDRE
 WHERE NUMERO_CLASSE=:NUMCLASSE
 Order By MOYENNE DESC;

Dans la version Delphi 7 Entreprise, les ordres SQL de IBUpdate peuvent être générés automatiquement :

 

  1. Mettez la propriété Active de IBDatabase1 à True. Faites de même avec IBTransaction1 et IBQuery1.
  2. Cliquez droit sur IBUpdateSQL1 et activez l'Editeur IBUpdateSQL.
  3. Cliquez sur Sélectionner les clés primaires, puis sur Générer le SQL. Tous les ordres SQL d'IBUpdateSQL1 sont alors automatiquement générés.

Compilez, Exécutez :

NB: Le champ ORDRE doit être déclerer comme clef PRIMAIRE lors de sa création.

Nous navons pas besoin de faire une jointure, parce que nous travaillons avec une une table bien determinée (TMOYENNE) donc precision pas necessaire.

La remise à zéro ici n'est vraiment pas necessaire parce toute fois qu'on aura besoin de faire l'"ORDRE" il suffit de faire appelle au coposant IBUpdateSQL1 qui nous met automatiquement à jour le contenu du champ ORDRE de TMOYENNE en fonction de l'ordre des données du champs MOYENNE, de façon dynamique sans une une mise à zéro au préalable.

Bonne compréhension et je suis toujous disponible pour faire comprendre ma methode dans les moindres détails. "tout ce qui se conçoit bien s'énonce clairement" ....ZICSON1



ful

Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 04/07/2008 19:25:58

cantador
Membre Club
content que tu es réglé ton problème,
mais moi je n'utilise pas les compos natifs IB qui ne sont pas excellents
(tu le verrras à l'usage..)

je préfère FIB+ ou TIBO

cantador

Re : COMMENT RECUPERER LE N° D'ORDRE D'UN CHAMP DANS UNE REQUETE le 05/07/2008 11:15:56

cantador
Membre Club
UPDATE TMOYENNE
 SET ORDRE = :ORDRE
 WHERE NUMERO_CLASSE=:NUMCLASSE
 Order By MOYENNE DESC;

et

NB: Le champ ORDRE doit être déclerer comme clef PRIMAIRE lors de sa création.


heu, à mon avis, il doit y avoir une erreur quelque part...

cantador


Classé sous : ordre, recuperer, moyenne, moyennes, étudiant

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS