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 : index multiple [ Base de données / Autre ] (Eros2007)

lundi 8 janvier 2007 à 11:42:04 | index multiple

Eros2007

salut , je debute dans la programmation , j'ai un ptit pbm concernant la création d'un index multiple (expression index) sous dbase , lors de la sauvegarde de  la table avec le nouvel index j'ai le message d'erreur " descripteur d'index incorrect"

merci pour l'aide a+


lundi 8 janvier 2007 à 15:02:53 | Re : index multiple

ThWilliam

Membre Club
Salut,

pour pouvoir t'aider, il nous faudrait ton expression index...

Thierry

lundi 8 janvier 2007 à 19:19:08 | Re : index multiple

Eros2007

Merci

Thierry

je vous remercie pour avoir répondu à  ma premiere question sur ce forum.

c'est trés sympa.

comme je l'ai fait dêja savoir , je débute dans la programmation ,et je vient de rencontrer un petit problème.

voila

j'ai 3 table table1 table2 et table3

pour pouvoir enregistrer des donnée:

 

La table1 renferme l'enregistrement des élèves

La table2 renferme les enregistrements des type de cours

La table3 renferme les seances prises par un éleve pour un type de cours bien defini.

comment faire la relation entre les 3 tables ?

j'ai mis dans la proprieté master source de la table2 datasource1qui est reliée à la table1

cela marche bien.

mais cela se gate quand je fait relier la table3 en mettant sa proprieté master source a datasource2 qui est relier à la table2

cela ne marche pas bien ,j'ai pensé qu'il falai mettre un index multiple (expresion index pour mettre plusieurs champs en index)

dans lequel je choisi les champs( élève+cour+seance) , jobtient une fenetre qui me demande de saisir un (index tag name)

je saisi un nom et je fait OK il accepte ,mais au moment oû j'essai d'enregistrer la table3 avec le nouvel index j'obtient un messge d'erreur <<< descripteur d'index incorrect>>>.

merci pour votre aide

A+


mardi 9 janvier 2007 à 16:09:52 | Re : index multiple

ThWilliam

Membre Club
Salut,

Avec un fichier DBase, un index sur plusieurs champs doit se faire sous la forme : "ELEVE+COURS+SEANCE" , c'est à dire une expression d'index.
Ceci, placé dans la zone expression d'index de l'outil Delphi 'Module Base de données' ne devrait provoquer aucune erreur.

 Mais il est impossible avec ce genre d'index d'affecter une relation table maître/détail, puisque il faut faire une relation entre 1 champ de la table maître et 1 champ de la table détail, mais ici nous n'avons pas un "champ" indexé, mais une expression d'index.

Table1 = les élèves : donc 1 seul champ suffit : ELEVE. Index sur ce champ.

Table2 = les cours. Mais comme tu as établi avec succès une relation avec la table1, tu l'as fait sur base du champ Eleve. Donc dans table2, tu as comme enregistrements :
Dupuis/Math, Dupuis/ Histoire, Legrand/Math...  Chose que je ne ferais pas : la table2 ne devrait que renseigner les cours, sans s'occuper des élèves (donc un champ Cours + index sur ce champ).

 Les tables 1 et 2 servent en fait de codes obligatoires pour le reste : un élève dans la table 3 doit se trouver dans la table1, un cours dans la table3 doit se trouver dans la table2...

Si tu as besoin de connaître les élèves inscrits à tels cours, il te faut une table 3 qui aura comme champs eleve et cours. Si tu l'indexes sur 'eleve', tu pourras établir une relation avec la table1. Si tu l'indexes sur 'cours', tu pourras établir une relation avec la table2.

La table 4 reprend les champs eleve,cours,seance + autres infos. Index sur les 3 premiers champs.
Pas de déclaration de relation avec les autres tables. Les informations obtenues dans le dbgrid lié à cette table seront obtenues par filtre des données. Très simple en utilisant l'événement OnFilterRecord :

procedure TForm1.Table4FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
     Accept:= ((Table4.FieldByName('ELEVE').asString = Table3.FieldByName('ELEVE').asString) and
             (Table4.FieldByName('COURS').asString = Table3.FieldByName('COURS').asString));
end;

Pour activer le filtre, la propriété Filtered doit être true. Donc, le plus simple, deux boutons:

procedure TForm1.FiltrerBtnClick(Sender: TObject);
begin
   Table4.Filtered:= true;
end;

procedure TForm1.SupprimerFiltreBtnClick(Sender: TObject);
begin
  Table4.Filtered:= false;
end;  

Donc tu te ballades dans le dbgrid lié à la table3,  clic sur filtrer et les infos obtenues ne concerneront que l'élève x et le cours y.

Remarque : il y a moyen de coder différemment le filtre pour avoir toutes les séances de tel élève (pour tous les cours) ou toutes les séances de tel cours (pour tous les élèves).

Je ne sais pas si j'ai été très clair. Aussi n'hésite pas...

A +
Thierry    

mardi 9 janvier 2007 à 19:04:46 | Re : index multiple

Eros2007

Merci

Thierry 
Jevais essayer de déquortiquer votre réponse pour bien comprendre ,et faire un essai ,
je vous dirai le résultat par la suite ,
encore merci ,
A+

lundi 15 janvier 2007 à 16:58:09 | Re : index multiple

Eros2007

salut Thierry

j'ai bien décortiquer votre  réponse qui m'a vraiment aider ,c'est simple vous m'avez tout simplement (et avec peu de code) mis sur le bon chemin.
encore merci.
pour l'index:
Tout à fait  Thiery , l'expression index passe trés bien en rajoutant les + entre chaque index .

*pour mon problème d'enregistrement sur la table3 des séances tout en voulant avoir dans mon dbgrid {qui est lui même relier à la table3(seances)} l'affichage des ( num_eleve , num_cours ,et num_seance ). 
        *Pour enregitrer les seances d'un (élève N° ..n ), en relation avec un( cours N°..n ), j'ai coder comme suite:

NB: la table2 (cours) c'est une table qui enregistre des numero de cours qui s'ajoutent au fûr et à mesure que l'élève en demande((le type de cours, est comme vous me l'aviez dit,  n'intervient pas dans les enregistrements)).

j'ai relier la table2 (cours) à la table1(élève).<<maitre detail>>  pour faire le lien entre num_eleve et num_ cours.
et j'ai relier la table3(seances) à la table2(cours).<<maitre detail>> pour  afficher     les num_cours dand le dbgrid {qui est relier à la table3 }et faire  le lien avec les seances..

procedure TForm1.nouvelle_seanceClick(Sender: TObject);
begin
        table3.Edit;
        table3.Append;
        table3.FieldValues['num_seance']:=table3.RecordCount+1;
        table3.FieldValues['num_eleve']:=table1.FieldValues['num_eleve'];  // pour afficher le num_eleve dans le dbgrid relier à la table3

** donc avec le premier élève tout marche trés bien.
 ** seulement pour les autres élèves, à chaque fois que je veut donner une nouvelle séance au cour N°n  de l'élève N°n cela se gate.
 Je pense que cela arrive parceque je ne suis pas encore arriver a lier les trois tables en même temps pour qu'à chaque fois, que je change le num_eleve
il ya changement dans les num_cours et dans les num_seances.
////je sais qu'il ya  une solution quelque part certe, mais il va faloir me doter de patience, j'en ai pas mal ,j'espère.
cher Thiery j'espere être un bon élève à ceux qui savent bien aider autrui!!!!!
merci encore .


mardi 16 janvier 2007 à 12:31:06 | Re : index multiple

Eros2007

salut thierry
avez vous vu le 2ieme volet de mon probleme ?
si oui ! auriez vous un idée a me proposer ?
j'attend votre réponse
merci!
A+



Cette discussion est classé dans : index, multiple


Répondre à ce message

Sujets en rapport avec ce message

ListView, TreeView ! INDEX! [ par rtfm ] Salut ma petit gang de delphinologue ;pJ'ai un petit probleme.. J'aurais besoin d'une manière de stocker la crée primaire de la string que j'ajoute a Ajouter par programmation un index secondaire [ par haaltruf ] Je galère pour ajouter un index secondaire en programmant (et non en utilisant le DataBase Desktop) pour pouvoir ensuite trier ma base.La méthode de l créer par programmation un index dans une table paradox [ par juan ] bjour tous, J'ai une TTable obtenue par copie (méthode batchmove) d'une autre table, et donc sans aucun index défini. Est il possible de définir cet i index dans une table paradox [ par titi29 ] Comment créer par programmation un index dans une table paradox? custom_array[custom_index] := custom_value possible ?????? [ par damanix ] Je voudrais savoir si c possible en delphi comme dans a peu pret tous les langages, mais la ça fait 3 heures que je me perd dans les arrays properties Probleme d'acces de violation. [ par VashTheStampede ] Mon prog marche normalement pendant 5 secondes environ; ensuite il plante et une fenetre s affiche m indiquant : "access violation at 0x77f551847 : wr Connaitre son index dans une TList... [ par phoenyx ] ptit problème :j'ai une objet (TObjet1) qui contient une TList. Cette TList pointe sur des objets (TObjet2).TObjet1 sait supprimer les TObjet2 de la T Calendrier a selection multiple [ par magicvinni ] Bonjour, je cherche un composant de calendrier où je pourrais definir la couleur de chaque jour par exemple mettre en rouge tous les jours fériés ( ou Load et unload de contrôle [ par MyC ] Salut,Je suis débutant en Delphi, et je cherche les fonctions similaires à "Load contrôle(index)" et Unload contrôle(index) de Visual Basic (càd les f base de donnée, index endomagé [ par ourida78 ] je suis devolepeur sytéme information banque delphi sqlserverj'ai un probléme avec mes tables (base d donnée), je reçois le message index endommagé qu


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.