|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Salut à toutes et à tous,
Dans le cadre d'un projet éducatif,nous sommes confrontés à un problème: nous avons 2 tables: TNiveau et TClasses. la TClasses liée à TNiveau par relation maître/détail par la champ num_Niveau. Les Champs de TNiveau: num_Niveau , nombre_niveau , nom_Niveau. Les Champs de TClasse: num_Niveau , num_Classe , nom_Classe. -Chaque niveau peut avoir plusieurs classes. exemple : -Niveau1 => classe1,classe2,classe3,classe4. -Niveau2 => classe1,classe2,classe3. -Niveau3 => classe1,classe2,classe3,classe5,classe6. *Notre problème est le suivant: nous voulons quand on indique le nombre de niveau,on ajoute automatiquement le nombre de classe avec le nom de la Classe. Exemple: -Niveau3 = 6 Classes => ajoute dans la TClasse: classe1,classe2,classe3,classe4 ,classe5,classe6. Après ça, si on édite le nombre, par exemple :nombre_niveau devient : 4 Classes , je veux qu'on supprime seulement les deux derniers enregistrements(classe5 et classe6) du Niveau3 . SGBD: Paradox. Merci. NABIL74. |
|
|
01
|
|
|
#2 | |
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
![]() Il n'y a aucune difficulté particulière sur cet énoncé et ce n'est pas la relation maître/détail qui en apporte plus. Si le problème est que vous êtes bloqués dans la réalisation de ce TD, montrez nous ce que vous avez fait, les endroits où vous êtes bloqués. On vous aidera à les comprendre et à les résoudre. Et ça vous sera plus profitable que d'attendre une solution pré digérée !
__________________
Philippe. |
|
|
|
10
|
|
|
#3 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 272 ![]() |
je ne vais pas vous donner de code Delphi mais vous montrer les possibilités d'une SGBDR (Firebird dans mon exemple) une SGBDR peut contenir des Tables ,bien sur ,mais aussi des procédures. A noter, Que dans le cas d'une SGBDR il n'y aurait nul besoin d'avoir un Champ Nombre_classe dans la table NIVEAU Code SQL :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 256 ![]() |
Citation:
Et ainsi, offrir à ses élèves une correction digne de ce nom ! Citation:
Mais il est vrai, OUBLIEZ PARADOX ! Un professeur qui enseigne encore BDE + Paradox en 2012 ne rend pas service à ces élèves, Thierry Laborde, Responsable technique chez Embarcadero, rappel chaque année qu'il faut migrer vers DBExpress et éventuellement sur Interbase pour vendre quelque licence mais qu'il existe dans la version pro le client MySQL ! Vos élèves apprennent une technologie obselète, une compétence d'une banalité affligeante pour un développeur Delphi, il y aura toujours de développeur sénior qui savent comment maintenir et, avec de la chance, pourront se débarrasser de Paradox pour la pérennité du logiciel !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
||
|
|
00
|
|
|
#5 | |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 272 ![]() |
Citation:
Mais j'ai remarqué , que les posts des Algériens comme des Tunisiens, les questions avaient souvent tendance a tourner autour de Paradox
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
![]() Citation:
Citation:
__________________
Philippe. |
|||
|
|
00
|
|
|
#7 | |
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Citation:
Je n'est pas demandé à quiconque de faire ce travail à ma place , j'ai espéré un avis de professionnel sur cette problématique. Une info: j'enseigne pas la programmation mais la langue française cher ami. j'essai de donner un coup de main à mes étudiants. @ Sergio: merci pour ce code, je le testerai ce soir inchallah. @ShaiLeTroll: je prends toujours notes de tes conseils. Et pour Paradox, vous avez raison, il est mort depuis plus de 10 ans!! Personnellement , je travaille sous Firebird, depuis plusieurs années et ça me convient très bien. Comme les étudiants en informatique sont débutants et ils ne savent pas où mettre les pieds, ils commencent à programmer en utilisant paradox commme SGBD car ils pensent que c'est plus facile à magner que d'autres. @+ NABIL74 |
|
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 256 ![]() |
Citation:
Leur professeur d'info devrais imposer l'interdiction d'utiliser du BDE ! ![]() Tu devrais lui en toucher deux mots ! ![]() Perso, quand j'étais Etudiant Apprenti, on a utilisé PostgreSQL sous Java et Oracle sous VB6, fallait se débrouiller avec uniquement du SQL, les CREATE et les classique SELECT\UPDATE... Paradox, je l'ai utilisé en Entreprise sous D4, mon tuteur était justement en train de passer l'appli en Interbase 6 avec les composants DBX de D5, il y a plus de 10 ans effectivement
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
![]() Citation:
![]() Le problème récurrent est que bien souvent des "étudiants" déposent ici un sujet de TD et attendent béatement qu'on leur donne la solution. Ce n'est pas cela qui les fera progresser... Commencer par se documenter et réfléchir ?
__________________
Philippe. |
||
|
|
00
|
|
|
#10 | |||
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Citation:
il m'a dit qu'il passera sous Firebird , Absolute Database et DBExpress. @Sergio: En bricollant la procedure sous Firebird, les étudiants n'ont pas réussi à l'adapter : Code :
Nabil74 |
|||
|
|
00
|
|
|
#11 | |||
|
Expert Confirmé
![]() ![]() |
Citation:
Code :
__________________
Philippe. |
|||
|
|
00
|
|
|
#12 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 272 ![]() |
Que d'erreurs de la part de ces élèves !
- je ne vois pas la boucle de mon algo - pour une Query (cas du Delete et du UPDATE) qui ne renvoie rien on utilise ExecSQL et non Open - j'ai horreur également des personnes qui pensent qu'un utilisateur saisira un nombre dans un TEdit , une conversion avec controle est nécessaire -par pitié , gardez les mêmes nom de champs et de tables , et nommer les zones de saisies Edit1-> NombreClasses , Edit2-> Niveau , c'est quand même plus lisible - Mettez des alias aux champs calculés dans les Querys , à ma souvenance COUNT(*) devient 'COUNT' ou 'COUNT_1' et non 'COUNT(*)' - Enfin faites attention aux variables utilisées vos élèves se mélangent les pinceaux (i devient quelquefois le niveau !) Bon, Philippe m'a coupé l'herbe sous le pied en proposant un code [edit] @Phillipe , je n'ai pas de FOR SELECT .... donc il n'y a pas de boucle sur la table NIVEAU Cependant j'aurais préféré une approche plus 'pédagogique' (reste de mes années "prof Shaïtan") , avec une seule Query (c'est possible) et crée dynamiquement , et passage de paramètres . Voilà ce que j'aurais aimé voir Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#13 | ||||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
Ensuite, je n'ai pas tout à fait suivi pas à pas votre code PSQL. Je suis plutôt reparti de l'énoncé et j'ai fait une mise à jour globale de la table Classe en fonction des données qui sont saisies dans la table Niveau. Pour hypothèse, je ne suis pas parti d'un TEdit où aurait été saisi la valeur nombre, mais de 2 grilles (une par table). La table niveau étant éditable pour saisir les niveaux, leur nombre ; la table classe est lié par une relation maitre/détail à la première et n'est la qu'en mode visualisation pour vérifier le résultat... Citation:
sinon, c'est à désespérer !
__________________
Philippe. |
||||
|
|
00
|
|
|
#14 | ||
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Salut;
Citation:
Le TEdit est pour la saisie du nombre de classes du niveau concerné. Je leur ai passé ton message. Pour ton nouveau code, on le testera et on vous dira ce que ça donne. Citation:
@Ph. B.: ça marche! c'est ça ce qu'on voulait obtenir. une requête selection, une detele si c'est le nombre est en plus, une autre insertion si le nombre est moins. Merci pour ce tuyau . ![]() Ce code marche sans faire la jointure des deux Tables, on peut s'en passer donc. Merci à vous! @+ NABIL74 |
||
|
|
00
|
|
|
#15 | |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 272 ![]() |
Citation:
Je n'avais pas compris qu'il fallait remplir tous les niveaux mais seulement le Niveau saisi avec le nombre de classe de Classe saisi
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
|
00
|
|
|
#16 | ||
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Bonsoir,
@Sergio: voilà ce que les étudiants m'ont envoyé par email: Code :
le Delete ne fonctionne pas. @ NABIL74 |
||
|
|
00
|
|
|
#17 | |||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 272 ![]() |
pas mal ,
3 remarques toutefois : QD.params.Clear est inutile TClasses.Refresh; ne devrait pas être dans la boucle je m'attendais aussi a un libellé nom_classe , où est il ? Citation:
Code :
QD.ParamByName('nom_classe').AsString:=Format('Classe%d',[i]); Code SQL :
DELETE FROM CLASSE WHERE NUM_NIVEAU=:NIVEAU AND NUM_CLASSE>:NOMBRE -- d'ailleurs j'avais oublié le niveau , nul n'est parfait ;-) Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|||
|
|
00
|
|
|
#18 |
|
Membre éprouvé
![]() NABIL Enseignant Inscription : août 2008 Messages : 482 ![]() |
Bonsoir,
On ne pouvait pas espérer mieux! Merci à vous tous pour votre précieuse aide. Pour moi ce topic est clos. Bonne soirée. NABIL74 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com