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

Composants VCL Delphi Discussion :

alimenter un dbcombobox


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut alimenter un dbcombobox
    salut, je voudrais alimenter un dbcombobox par programmation, je suppose que les 3 parametres ci apres sont les essentiels à fournir: le listsource, le listfield et le keyfield

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    moduledonnees.test.SQL.Add('requete');
    DBLookupComboBox1.ListSource.DataSet:=moduledonnees.sotest.DataSet;
    dblookupcombobox1.ListField:=moduledonnees.sotest.DataSet.FieldByName('LISTE_INDICATEUR.NOM_INDICATEUR').AsString;
    dblookupcombobox1.KeyField:=moduledonnees.sotest.DataSet.FieldByName('LISTE_INDICATEUR.ID_INDICATEUR').AsString;
    mais il me renvoi un message d'exeception, en fichier joint
    je sais pas ou peut se trouvé l'erreur
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par moustaf_26 Voir le message
    je voudrais alimenter un dbcombobox
    C'est un TDBLookupComboBox, ce qui n'est pas la même chose...
    Voir la FAQ !

    Citation Envoyé par moustaf_26 Voir le message
    il me renvoi un message d'exception
    Violation d'accès, un de tes objets doit être indéfini (=nil), peut-être moduledonnees.sotest.DataSet. A vérifier en traçant pas à pas et contrôlant les variables ou propriétés...
    --
    Philippe.

  3. #3
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    merci PH.b, excus j'ai mal ecrit sinon mon composant est bien un dblookupcombobox, j'ai vu la fac aussi, mais je voudrai savoir dans mon code, ou se trouve le probleme? je voudrais savoir si c'est les bonnes et suffisantes instructions qu'il faut(utilisation des proprietés du composant).
    concernant le 'nil' comme au debut j'ai alimenté mon tsqlquery,
    mon dblookupcombobox prend le dataset d'un datasource,
    ma question faudrait -t-il lier mon composant datasource à mon tsqlquery? si oui , comment? merci

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 096
    Par défaut
    'LISTE_INDICATEUR.ID_INDICATEUR' c'est possible comme nom de champ ?
    Je trouve cela étrange, LISTE_INDICATEUR est la table, et ID_INDICATEUR est le nom du champ !
    Parcontre, je crois que FieldByName provoque DatabaseError si le champ n'existe pas !
    Comme tu as une EAccessViolation et non une EDatabaseError, c'est que l'erreur est avant FieldByName
    On voit que tu affecte ListSource.DataSet, c'est étrange !

    Est ce que DBLookupComboBox1.ListSource et moduledonnees.sotest.DataSet ont été instanciés ?
    Pour le TDBLookupComboBox, il faut DEUX DataSet donc DEUX DataSource un pour le contenu du champ, un second pour la liste de valeurs !

    Ensuite, on se demande même si tu comprends ce que tu fais et si tu as lu l'aide du TDBLookupComboBox
    Ton code écrit des valeurs dans des propriétés attendant des noms de champs, cela n'a juste aucune cohérence et montre que tu n'as strictement rien compris à ce que tu as lu dans la FAQ !
    tu ne mesure pas l'importance des DFM et le Système de Flux qui apporte une instanciation implicite des Objets
    Si tu veux le faire par code, tu dois faire une instanciation explicite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DBLookupComboBox1.ListSource := TDataSource.Create(DBLookupComboBox1);
    DBLookupComboBox1.ListSource.DataSet := moduledonnees.sotest.DataSet;
    dblookupcombobox1.ListField:= 'NOM_INDICATEUR';
    dblookupcombobox1.KeyField:= 'ID_INDICATEUR';
    Tu n'avais même pas UNE seule ligne de correct ! Merci de ne pas bricoler et d'inventer n'importe quoi !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    merci, c'est en forgeant qu'on devient forgeron, j'ai pas une grande connaissance en delphi, pour DBLookupComboBox1.ListSource et moduledonnees.sotest.DataSet , c'est des composants que j'ai crée en mode conception, donc je pensais que je ne drevrai pas instancier encore.
    mais je rencontre un probleme encore je veux en fait remplir mon dataset dynamiquement avec du sql parametré,
    le probleme c'est que en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    montsqlquery.sql.add(requte);
    montsqlquery.active:= true;
    ça m'indique un message d'erreur(database error sql ne se termine pas correctement) pourtant si je met la meme requete dans le composant visuel tsqlquery, ça passe, je voudrais passer des requetes parametré.
    une fois merci encore

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 096
    Par défaut
    Citation Envoyé par moustaf_26 Voir le message
    merci, c'est en forgeant qu'on devient forgeron, j'ai pas une grande connaissance en delphi, pour DBLookupComboBox1.ListSource et moduledonnees.sotest.DataSet , c'est des composants que j'ai crée en mode conception, donc je pensais que je ne drevrai pas instancier encore.
    Pour moduledonnees.sotest.DataSet, on peut penser que l'object est correctement instancié
    Pour DBLookupComboBox1, c'est bon aussi
    Mais pour DBLookupComboBox1.ListSource, c'est une propriété à nil par défaut, c'est au programmeur de lui affecter un objet, elle fonctionne exactement comme la propriété DataSource
    soit tu poses un objet TDataSource via l'IDE et tu l'attache
    soit tu l'instancies manuellement puis tu l'affecte

    Pour ton erreur SQL, tu ne fournis pas le SQL et tu ne fournis pas la mise en place des paramètres, difficile de t'aider, on a pas de boule de cristal pour deviner les erreurs
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. Alimenter un db MySql depuis FileMaker
    Par aquel dans le forum Autres SGBD
    Réponses: 20
    Dernier message: 17/02/2004, 15h23
  3. Alimenter le context sur un appel Javascript ?...
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 20/10/2003, 15h44
  4. Alimentation d'un SGBDR depuis un autre SGBR
    Par samyl dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 17/09/2003, 15h57
  5. [XMLRAD] DBComboBox
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 27/11/2002, 15h11

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