Clé Composée !!

tmsarts Messages postés 18 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 octobre 2012 - 3 mai 2009 à 01:14
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 5 mai 2009 à 18:25
Salut à tous
Je travail sur un projet de Budget, et je veut facilité la saisi du code d'opération.
Sachant que j'ai :
- Une base de donnée "Secteur" avec un code (Code_Secteur) ex : 'C' ---> A
- Une base de donnée "Sous_Secteur" avec un code (Code_SousSecteur) ex : 'CNN' ---> A12
- Une base de donnée "Chapitre" avec un code (Code_Chapitre) ex : 'NNN' ---> 392
- Une base de donnée "Article" avec un code (Code_Article) ex : 'N' ---> 8
- Une base de donnée "Commune" avec un code (Code_Commune) ex : 'NNN' ---> 224
- Et la base de donnée "Opération" qui héberge tous ces Codes avec les intitulés et montants des projets;

Comme vous voyez, la clé ou le code d'opération se compose de clés des ses Bases de Donnée, je suis obligé d'utiliser 05 Champs pour les reliées en exploitation et consultation des données.

* je veut faire un seule Mask Edit avec un contrôle de saisi (A-A12-392-8-224), mais que je puisse relier les 05 bases de données avec leurs clés correspondantes.
Merci.

6 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
3 mai 2009 à 13:37
Bonjour,
Mets cela dans la propriété EditMask de ton TMaskEdit :
!>a<->a<00-000-0-000;_

@+
Nico { www.ni69.info }
0
tmsarts Messages postés 18 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 octobre 2012
3 mai 2009 à 19:23
Salut;
Je sais utiliser le TMask Edit,

Mais je veut  que : !>A->A00-000-0-000;_
>A : Relit la base de donnée "Secteur";
>A00 : Relit la base de donnée "Sous_Secteur";
...
Merci !
0
tmsarts Messages postés 18 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 octobre 2012
3 mai 2009 à 19:24
Y'a t'il pas une fonction !??
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
3 mai 2009 à 21:15
"relier" ne veut rien dire en soi.
Sois plus précis sur ce que tu veux faire, sinon on n'avancera pas

@+
Nico { www.ni69.info }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tmsarts Messages postés 18 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 octobre 2012
4 mai 2009 à 00:27
Salut;
J'explique :
Je travail sous Delphi 5 avec une BD Paradox 7;
J'ai 04 Table dont :
-La Table1 appelée "Secteur" avec identifiant 'Code_Secteur" avec champ
 Alphanumérique sur 02 positions.
-La Table2 appelée "Chapitre" avec identifiant 'Code_Chapitre" avec champ
 Numérique sur 03 positions.
-La Table3 appelée "Commune" avec identifiant 'Code_Commune" avec champ
 Numérique sur 03 positions.
-La Table4 appelée "Opération" avec identifiant 'N° Opération" avec champ
 composé des identifiants de la Table1,2,3.
Ex : N° Opération avec composant TMask Edit : (!>L0-000-000;0;_)

Ce que je veut, c'est quand je saisi un N° d'opération, je veut être relier avec chacune des Tables (comme L0 affiche les information de la Table1...).
Merci !
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
5 mai 2009 à 18:25
Je n'ai toujours pas vraiment saisi où était ton problème !
A partir du moment où tu peux "relier" (j'ai toujours pas compris non plus exactement ce que tu faisais à cette étape là, mais bref passons), un champ à une table, tu peux relier un champ (donc ici le MaskEdit) à cinq tables, juste en utilisant la fonction Copy pour extraire les différentes parties de l'identifiant global...

var
   IDglobal: string;
   Code_Secteur, Code_SousSecteur : string;
   Code_Chapitre, Code_Article, Code_Commune : integer;

IDglobal := MaskEdit.Text;
Code_Secteur := IDglobal[1];
Code_SousSecteur := Copy(IDglobal, 3, 3);
Code_Chapitre := StrToInt(Copy(IDglobal, 7, 3));
Code_Article := StrToInt(IDglobal[11]);
Code_Commune := StrToInt(Copy(IDglobal, 13, 3));

@+
Nico { www.ni69.info }
0
Rejoignez-nous