Faire et défaire dynamiquement une relation Maître-Détail [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 27-05-2002 à 11:32:39
viiz a écrit a écrit : Tab_detail.MasterFields:= ''; Tab_detail.MasterSource:=nil; Mé bon c'est peut etre pas ca... |
J'ai déjà essayé ça (en toute logique) mais il m'affiche un message d'erreur
[jfdsdjhfuetppo]--Message édité par Thander le 27-05-2002 à 11:33:10--[/jfdsdjhfuetppo]
Marsh Posté le 27-05-2002 à 11:52:35
Bon, ben finalement, ça marche avec ça, désolé pour le dérangement
Tab_detail.MasterFields:= '';
Tab_detail.MasterSource:=nil;
Aujoud'hui ça marche alors que jeudi ça ne marchait pas, étrange
pour ton aide viiz
[jfdsdjhfuetppo]--Message édité par Thander le 27-05-2002 à 11:53:24--[/jfdsdjhfuetppo]
Marsh Posté le 03-06-2002 à 13:27:48
Toujours des problèmes
Avec Tab_tva : DataSource:Dat_tva
Tab_categorie : DataSource:Dat_categorie, identifiant:NUM
procedure TFrm_categorie.FormCreate(Sender: TObject);
begin
Tab_categorie.IndexName:= 'ILIB_CATEGORIE';
Tab_tva.MasterSource:= Dat_categorie;
Tab_tva.MasterFields:= 'NUM';
Tab_tva.IndexFieldNames:= 'NUM_CATEGORIE;JOUR';
end;
procedure TFrm_categorie.FormClose(Sender: TObject);
begin
Tab_tva.MasterSource:=nil;
Tab_tva.MasterFields:= '';
Tab_tva.IndexFieldNames:= '';
end;
La 1° fois que j'ouvre la Form, pas de problème
Ensuite, je la ferme et je la ouvre à nouveau, et là gros message d'erreur "Field 'NUM' not found"
Par contre si j'essaie d'enlever la ligne Tab_tva.IndexFieldNames:= ''; et bien là ça marche
C'est quoi ce truc
Marsh Posté le 03-06-2002 à 17:10:02
Le temps de tester si ça marche dans tous les cas
Je donne directement les procédures :
procedure SupprimerRMD(Table: TIBTable);
begin
Table.Active:= False;
Table.MasterSource:= nil;
Table.MasterFields:= '';
Table.IndexFieldNames:= '';
Table.Active:= True;
end;
procedure CreerRMD(Table: TIBTable; MasterSource: TDataSource; MChamp: String; Index: String);
begin
SupprimerRMD(Table);
Table.Active:= False;
Table.MasterSource:= MasterSource;
Table.MasterFields:= MChamp;
Table.IndexFieldNames:= Index;
Table.Active:= True;
end;
Marsh Posté le 04-06-2002 à 12:31:39
Version finale :
procedure SupprimerRMD(Table: TIBTable);
begin
with Table do
begin
Active:= False;
MasterSource:= nil;
MasterFields:= '';
IndexFieldNames:= '';
Active:= True;
end;
end;
procedure CreerRMD(Table: TIBTable; MSource: TDataSource; MChamp: String; Index: String);
begin
SupprimerRMD(Table);
with Table do
begin
Active:= False;
MasterSource:= MSource;
MasterFields:= MChamp;
IndexFieldNames:= Index;
Active:= True;
end;
end;
A ne pas faire (je me suis fait avoir )
procedure CreerRMD(Table: TIBTable; MasterSource: TDataSource; MChamp: String; Index: String);
begin
SupprimerRMD(Table);
with Table do
begin
Active:= False;
MasterSource:= MasterSource;
MasterFields:= MChamp;
IndexFieldNames:= Index;
Active:= True;
end;
end;
MasterSource:= MasterSource, là le compilateur fait i:=i, alors la procédure ne marche pas
Donc with attention
Marsh Posté le 27-05-2002 à 11:19:31
à tous
Voilà sous Delphi, j'établi dynamiquement une relation Maître-Détail comme ça :
Tab_detail.MasterSource:=Dat_maitre;
Tab_detail.MasterFields:= 'NUM';
Avec Tab_detail : DataSource:Dat_detail
Tad_maitre : DataSource:Dat_maitre, identifiant:NUM
Mon problème, c'est de détruire de façon dynamique cette relation dans Delphi
Comment y faut faire
de vos réponses