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

Bases de données Delphi Discussion :

avoir plusieurs MasterSource pour le meme ensemble de donnée


Sujet :

Bases de données Delphi

  1. #1
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut avoir plusieurs MasterSource pour le meme ensemble de donnée
    est il possible d'utiliser plusieurs MasterSource pour le même ensemble de donnée ??
    si oui comment ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Si tu fais une chaine, Master A contenant Champ1 est maitre du Detail B contenant Champ1 et Champ2, lui même est Master B maitre du Detail C contenant Champ2 et Champ3

    Avec des requêtes paramètrées correctement écrites, tu peux lier des tables très efficacement, c'est surtout valable pour le TTable avec DBase ou Paradox, après avec des SGBD SQL, vu que la récupération de données peu être longue, c'est une méthode moins interessante !

  3. #3
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    je pense que vous m'avez mal compris.
    l'exemple suivant est plus significatif:
    commande(id_commande , id_produit , id_client)
    produit(id_produit , nom_produit , prix)
    client(id_client , nom , adrese)

    dans ce cas la table commande a deux tables maitres : produit et client.
    comment faire pour déclarer ces deux table MasterSource pour la table commande?

    NB: j'utilise firebird comme sgbd.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    tout dépend comme tu fais le lien !

    Toi c'est Client + Produit -> Commande
    Hors il est impossible de faire une jointure entre Client et Produit sans passer par Commande selon ton modèle, sauf en faisant une CROSS JOIN pour combiner tous les Produits pour tous les Clients (cela fait une cardinalité assez montreuse) mais de tout façon, on finirait par obtenir toutes les commandes !

    Donc la seule liaison possible : c'est Client -> Commande -> Produit
    Relation N-N avec Commande comme Table de Relation !

    Typiquement, trois DBGrid, la liste des clients, tu en sélectionne un, tu obtiens la liste de ses commandes, tu choisis un commande, cela affiche les produits de la commande !

    utilise du SQL si tu veux faire extraire les commandes pour un client donné avec un produit donné !
    C'est typique d'une Statistique de Consommation pour savoir les habitudes d'un client et faire le mailing approprié !

  5. #5
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    La raison pour laquelle je veux deux MasterSource pour la table commande est que j'ai 3 Dbrgrid, en sélectionnant une commande (DBgrid_commande) je doit avoir la sélection positionnée sur le client (DBgrid_client) approprié et le produit approprié (DBgrid_produit).

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Tu te contredis !
    Ou alors tu confonds qui est le maitre et qui est le détail

    Citation Envoyé par adelneo Voir le message
    La raison pour laquelle je veux deux MasterSource pour la table commande est que j'ai 3 Dbrgrid, en sélectionnant une commande (DBgrid_commande) je doit avoir la sélection positionnée sur le client (DBgrid_client) approprié et le produit approprié (DBgrid_produit).
    Citation Envoyé par adelneo Voir le message
    dans ce cas la table commande a deux tables maitres : produit et client.
    comment faire pour déclarer ces deux table MasterSource pour la table commande?
    Tu pense le problème à l'envers !

    Tu n'as donc pas besoin de plusieurs MasterSource mais d'un seul servant deux fois !

    Produit et Client utilise Commande comme Master, avec chacun un champ différent comme paramètre dans leur SQL

    J'insiste sur l'utilisation des paramètres et de la propriété DataSource
    Voir l'aide, rurbrique "Etablissement de relations maître/détail en utilisant des paramètres"
    Il y a une différence entre DataSource et MasterSource, cela dépend de composant DBWare utilisé avec FireBird, est-ce BDE ? ADO ? IBX ? DBExpress ?

    Je ne suis pas convaincu que MasterSource et MasterFields permettent ce type d'imbrication même avec IndexFieldNames contenant Id_Produit et Id_Client
    A vérifier !

  7. #7
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    j'utilise les composants zeos pour la connexion à ma base firebird
    je vais voir avec l'utilisation des paramètres SQL.
    c'est possible que mon exemple est mal approprié mais est quelqu'un peut -il me confirmer l'impossibilité d'utilisation de plus d'un mastersource pour le même ensemble de donnée.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Oui, moi je te le confirme, puisqu'il n'existe qu'une seule propriété MasterSource lié à une seule instance DataSource !
    Sinon, tu aurais un tableau de MasterSource, avec un tableau de MasterKey !

    Ensuite ton exemple n'est pas faux*, c'est juste toi qui ne comprend pas ce que tu veux toi-même faire !

    *Qui se résume à "Un Maitre pour Deux Détails !"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Bison] plusieurs parsers pour un meme programme
    Par gedeon555 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 23/02/2007, 21h20
  2. [MySQL] Plusieurs valeur pour un meme champs
    Par poissonsoluble dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/06/2006, 15h34
  3. Etat : plusieurs enregistrements pour un meme champ
    Par b_steph_2 dans le forum Access
    Réponses: 21
    Dernier message: 02/02/2006, 12h21
  4. Gérer plusieur bouton pour un meme formulaire
    Par Phenomenium dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/01/2006, 13h08
  5. Avoir deux ip pour un même poste
    Par Michaël dans le forum Réseau
    Réponses: 8
    Dernier message: 19/07/2005, 18h59

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