IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Faire et défaire dynamiquement une relation maître - détail


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Faire et défaire dynamiquement une relation maître - détail
    Bonjour,
    Voilà j'ai trouvé ce code pour Faire et défaire dynamiquement une relation maître - détail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure SupprimerRMD(Table: TIBTable); 
    begin 
       with Table do 
       begin 
          Active:= False; 
          MasterSource:= nil; 
          MasterFields:= ''; 
          IndexFieldNames:= ''; 
          Active:= True; 
       end; 
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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;
    mais le problème est qu'il m'affiche pleins d'erreurs car ils ne reconnais pas:TIBTable ni les autres!!????

    Merci+++++++++++

  2. #2
    Invité1
    Invité(e)
    Par défaut TTABLE
    Bonjour

    TIBTABLE sont des tables Interbase

    Toi tu utilises des tables BDE

    Alors tu remplaces TIBTABLE par TTABLE est ça doit marcher

    a +++++++++++++

  3. #3
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par samy larson Voir le message
    Bonjour

    TIBTABLE sont des tables Interbase

    Toi tu utilises des tables BDE

    Alors tu remplaces TIBTABLE par TTABLE est ça doit marcher

    a +++++++++++++
    Oui, je ne suis quand même pas nulle à ce point, j'ai essayé avec le TTAble et idem

  4. #4
    Invité1
    Invité(e)
    Par défaut
    mais le problème est qu'il m'aafiche pleins d'erreurs car ils ne reconnais pas:TIBTable ni les autres!!????
    desolé , mais c'est ce que tu as écrit

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par souminet Voir le message
    mais le problème est qu'il m'affiche pleins d'erreurs car ils ne reconnais pas:TIBTable ni les autres!!????
    as-tu ajouté les unités IBTable et DB dans les uses de ton unité ?

  6. #6
    Invité1
    Invité(e)
    Par défaut
    j'ai essayé chez moi ton code est ça marche trés bien

    les unités utilisées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    uses 
    DB, DBTables;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure SupprimerRMD(Table: TTable); 
    begin 
       with Table do 
       begin 
          Active:= False; 
          MasterSource:= nil; 
          MasterFields:= ''; 
          IndexFieldNames:= ''; 
          Active:= True; 
       end; 
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure CreerRMD(Table: TTable; 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;
    utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CreerRMD(Table1, datasource2,'champ1', '' )
    bonne chance
    Dernière modification par Invité1 ; 06/10/2008 à 15h18.

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    1. j'ai un petit doute sur l'appel de la fonction de création de la relation donc peux-tu stp faire voir le code appelant.
    2. regardes ce qui se passe dans le OnDataChange ou OnStateChange si tu as posé du code dedans.

    Bon codage.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #8
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 483
    Points : 2 734
    Points
    2 734
    Billets dans le blog
    10
    Par défaut
    La relation maitre-détail que tu décris est au niveau de la fiche et non pas au niveau des tables. Il est important que tes tables soient elles mêmeq dans une relation similaire et que les clés primaire et secondaires soient bien positionnées.

  9. #9
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    En fesant tout ce qu'il fallait, il m'affiche LIAISON CIRCULAIRE NON AUTORISEE

    JE n'ai pas compris pourquoi?? mais je me souviens qu'une fois j'ai eu un problème similaire a cause des DBLookUpComboBox, non??????????,

    Merci

  10. #10
    Invité1
    Invité(e)
    Par défaut
    bonjour,

    pour savoir si c'est le DBLookUpComboBox qui est a l'origine du probleme

    tu le desactives, et tu executes ton programme.

    mais je pense, que le probleme est que tu as une liaison circulaire

    c.à.d soit tu as fait

    table1.MasterSource:= datasource2;
    table2.mastersource:= datasource1;

    c'est circulaire

    ou alors tu as mis

    table1.MasterSource:= datasource1; la table liée avec elle meme


    bonne chance

  11. #11
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    Très juste ce que tu penses. en fait, regardes les propriétés du DBLookUpCombBox si par hasard la ListSource n'est pas la même que le DataSource.

    Bon Codage.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  12. #12
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Kelloucheaeh Voir le message
    Salut;

    Très juste ce que tu penses. en fait, regardes les propriétés du DBLookUpCombBox si par hasard la ListSource n'est pas la même que le DataSource.

    Bon Codage.
    Oui effectivement c'était ça, la ListSource été identique à la datasource, j'ai pu régler le problème,
    Mais maintenant , il m'affiche : pas d'index pour les champs ...
    en fait je dispose d'une table : Articles avec comme clé le champs: Ref_Interne
    quant à la 2ème table : Table Livraison, avec pour clé secondaire : Ref_Interne (A travers le module base de données) car je ne pouvais pas la mettre en tant que clé , car plusieurs livraisons du même articles sont prévues, bref, à la création de cette clé secondaire on me demande de saisir un nom d'index , j'ai mis: MonIdex

    Justement je l'ai repris ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreerRMD(DataModule2.TablLivraison, DataModule2.DataSArticcle,'Ref_Interne','MonIndex' )

  13. #13
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re;

    ce que je te propose c'est de faire tout ça en mode conception car apparemment tout semble dans l'ordre.

    sauf peut être que tes index ne sont pas du même type ce qui est une condition dans le cas des relations maîtres / détails.

    Bon codage.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  14. #14
    Invité1
    Invité(e)
    Par défaut
    slt

    essaies de mettre la valeur de l'index à nil ''

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CreerRMD(DataModule2.TablLivraison, DataModule2.DataSArticcle,'Ref_Interne','' )
    bonne chance

  15. #15
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Kelloucheaeh Voir le message
    Re;

    ce que je te propose c'est de faire tout ça en mode conception car apparemment tout semble dans l'ordre.

    sauf peut être que tes index ne sont pas du même type ce qui est une condition dans le cas des relations maîtres / détails.

    Bon codage.
    Mais justement je ne veux pas que ça soi en mode conception, a cause des DBLookUpCombox...

Discussions similaires

  1. Problème avec une relation maître détail
    Par nb-wissam dans le forum Forms
    Réponses: 2
    Dernier message: 15/06/2010, 12h03
  2. [BDD]comment créer une relation maître-détails?
    Par SmileSoft dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/01/2009, 09h29
  3. Problème de création relation maître détail
    Par codial dans le forum Firebird
    Réponses: 4
    Dernier message: 21/02/2008, 17h33
  4. Mise à jour autravers d'une relation maitre-Détail
    Par Paxaranne dans le forum Forms
    Réponses: 3
    Dernier message: 26/07/2007, 15h00
  5. Gérer une relation Maitre détail
    Par codial dans le forum Bases de données
    Réponses: 10
    Dernier message: 16/10/2006, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo