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 :

2 DBLookupComboBox maitre-détail


Sujet :

Bases de données Delphi

  1. #1
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut 2 DBLookupComboBox maitre-détail
    [DELPHI 7- ACCESS ADO]

    bonjour,
    comme je programme occasionnellement, je n'arrive pas à faire fonctionner les composants (dblookupcombobox).

    j'ai 2 tables

    Table1:
    cleA -- integer PrimaryKey
    designation -- String

    Table2:
    cleB -- String (cleB+cleA primarykey)
    cleA -- integer
    designation -- String

    les proprietés MasterSource et masterField sont renseignées, pourtant certaines lignes de la table 2 ne sont pas prises en compte.
    merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 634
    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 634
    Points : 25 352
    Points
    25 352
    Par défaut
    Je n'ai pas l'habitude du TDBLookupComboBox mais il fonctionne comment bcp de composant Combo utilisant un second DataSource comme liste d'items

    Vu la structure de tes tables,

    Dans Table2, il peut y avoir plusieurs fois la même valeur de clé cleA
    Dans Table1, cleA est unique

    En toute logique,
    TDBLookupComboBox.DataSource c'est Table2
    TDBLookupComboBox.DataField c'est cleA (de Table2)
    TDBLookupComboBox.ListSource c'est Table1
    TDBLookupComboBox.ListField c'est designation (de Table1)
    TDBLookupComboBox.KeyField c'est cleA (de Table1)

    Ensuite, il ne devrait pas y avoir de MasterSource et MasterField qui vont masquer des lignes !
    Avec MasterSource et MasterField, tu pourras utiliser plutôt deux DBGrid l'un sur Table1 et l'Autre Table2
    Dans ce cas, je suppose que Table2 est un détail de Table1
    Lorsque tu sélectionneras une cléA de Table1, automatiquement Table2 sera filtré !

  3. #3
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je n'ai pas l'habitude du TDBLookupComboBox mais il fonctionne comment bcp de composant Combo utilisant un second DataSource comme liste d'items

    Vu la structure de tes tables,

    Dans Table2, il peut y avoir plusieurs fois la même valeur de clé cleA
    Dans Table1, cleA est unique

    En toute logique,
    TDBLookupComboBox.DataSource c'est Table2
    TDBLookupComboBox.DataField c'est cleA (de Table2)
    TDBLookupComboBox.ListSource c'est Table1
    TDBLookupComboBox.ListField c'est designation (de Table1)
    TDBLookupComboBox.KeyField c'est cleA (de Table1)



    Ensuite, il ne devrait pas y avoir de MasterSource et MasterField qui vont masquer des lignes !
    Avec MasterSource et MasterField, tu pourras utiliser plutôt deux DBGrid l'un sur Table1 et l'Autre Table2
    Dans ce cas, je suppose que Table2 est un détail de Table1
    Lorsque tu sélectionneras une cléA de Table1, automatiquement Table2 sera filtré !
    Bonsoir,
    effectivement table2 est une table détail de table1, il s'agit ici de la cle primaire, qui est une cle composée, la question est peut-on composer une cle
    avec 2 types de champs différents (integer & string)?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 634
    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 634
    Points : 25 352
    Points
    25 352
    Par défaut
    Des Types différents, si il utilise Value ou AsVariant, il doit pouvoir comparer des Variant entre eux mais est-ce qu'il va forcer de le type du premier sur le second, pas sur !
    J'ai bcp utilisé des AutoInc comme clé Primaire, et toutes mes jointures les utilisent !
    Seules les recherches, les imports et consolidation peuvent utiliser des critères de dédoublonnage sur les champs non AutoInc

    Sinon d'après ton premier message cleA dans les deux tables c'est un integer !
    As-tu retiré MasterSource\MasterField et correctement utilisé ListSource
    Je pense que ton problème est là !

    Si table2 est une table détail de table1, alors je pense que le ComboBox n'est pas le bon choix de présentation !
    Un bon exemple de ComboBox serait une table Commande avec une colonne CodeArticle dans DataField et une Table Article comme ListSource !

    Dans ton cas, utilise plutôt des DBGrid, si l'on sélectionne dans Table1 cela filtre Table2

    Ou alors, c'est que tu as mal pensé ton Modèle de BDD !

  5. #5
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Bonsoir LeTroll,

    Donc pas de problème pour une composée avec 2 types différents, il fallait indiquer dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IndexFieldName= CleB,CleA
    et ça marche.
    Merci encore une fois.

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

Discussions similaires

  1. Probleme etat maitre détail avec TclientDataset
    Par sessime dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/12/2005, 09h19
  2. [NON RESOLU] Problème changement maitre détail - Requête SQL
    Par Leesox dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2005, 09h49
  3. Quick report maitre détail avec TQuery
    Par shiners300 dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2005, 15h46
  4. Maitre/Détail -> Tri de la table detail
    Par Nathan dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/05/2004, 09h54
  5. [Rave] Maitre/détail
    Par gjullien dans le forum Rave
    Réponses: 1
    Dernier message: 25/10/2003, 14h59

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