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 :

appli delphi et recordset


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Points : 48
    Points
    48
    Par défaut appli delphi et recordset
    Bonjour à tous,

    Ca fait deux semaines que je planche sur un truc et jcommence vraiment à m'arracher les cheveux . Voila mon problème : J'ai une appli delphi simple pour l'instant avec un module de données qui interroge une base de données.

    Structure de ma table THEME : id identity (1,1)
    libelle char(20)

    Dans mon interface : une combobox remplie sur un OnCreate

    "procedure TfrmAjoutTheme.FormCreate(Sender: TObject);
    var
    i:integer;
    begin
    for i:=1 to 15 do
    cbThemesExistants.Items.Add(dm.donneLibelleTheme());
    end;"

    Dans mon module
    : ma fonction qui est censé me retourner les libellés des thèmes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function tdm.donneLibelleTheme():string;
    var
      req,theme:string;
      i:integer;
    begin
      req:='select libelle from theme';
      dm.dsTmp.CommandText:=req;
      dm.dsTmp.Active:=true;
      for i:=1 to dm.dsTmp.RecordCount do
        theme:=dm.dsTmp.Fields[0].AsString;
      dm.dsTmp.Active:=false;
      result:=theme;
    end;
    Mon problème est que je n'arrive pas à afficher tous les thèmes dans ma combobox SANS UTILISER les id de thèmes. QUand je les utilise c'est facile j'ai juste ç changer ma requête dans la fonction et le tour est jouer mais JE NE SUIS PAS CENSÉ connaître ces ID puisqu'ils sont auto je ne dois pas m'en occuper.

    Cordialement,
    Merci d'avance.
    GUillaume.

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    sans vraiment comprendre où est ton problème, voilà comment j'écrirais ce qu'il me semble que tu veux faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    procedure TfrmAjoutTheme.FormCreate(Sender: TObject);
    var
      i               : integer;
      req, theme : string;
    begin
      req:='select libelle from theme';
      dm.dsTmp.CommandText:=req;
      dm.dsTmp.Active:=true;
     
      i:=1;
      dm.dsTmp.First; 
      While (Not dm.dsTmp.Eof) and (i<=15) do
      begin
         cbThemesExistants.Items.Add(dm.dsTmp.Fields[0].AsString);
         dm.dsTmp.Next;
         inc(i);
      end;
         dm.dsTmp.Active:=false;
    end;
    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Points : 48
    Points
    48
    Par défaut
    Ok ca marche comme ça mais le problème c'est que tu effectue tes requêtes sur la base de données à partir de ton interface et mon objectif est d'utiliser le module UNIQUEMENT pour l'utilisation de la base.

    Cordialement,

    Guillaume.

    Aurais tu une autre solution ?

  4. #4
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Passes ton TStringList (combobos.items) et le nombre maximum d'élts (15) que tu veux y mettre en paramètre à ta procédure que tu déclareras dans ton datamodule.

    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Points : 48
    Points
    48
    Par défaut
    J'espère avoir bien compris... En fait ce que tu me dis c'est que je dois passer mon combobox.items en paramètre dans ma fonction ? c'est bien ça ?
    Cela signifie que je dois rajouter mes interfaces dans les uses du module. J'ai jamais eu à faire ça est ce que c'est correct ?

    Merci pour ton aide.
    Cordialement,

    Guillaume.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si j'ai bien compris le but de ce que tu veux faire, est de récupérer la liste des libellés de la table thème.

    Pourquoi, ne poses tu aps un DataSource dans ton Datamodule, tu lies se DataSource au composant Table/Query contenant la liste des libellés.
    Après dans ta fichie ou tu veux faire l'affichage d'une combobox avec la liste des libellés.
    Tu poses un DbLookUpComboBox dont tu vas configurer les propriétés de la manière suivante :
    • ListeSource : DM.Datasource1
    • KeyField : Libelle
    • ListField : libelle


    Tu compiles et tu executes, si tu n'as pas oublié d'ouvrir la table/query tu devrais avoir la liste dans le dblookupcombobox sans une ligne de code
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par guiguikawa
    Jtu me dis c'est que je dois passer mon combobox.items en paramètre dans ma fonction ? c'est bien ça ?
    Cela signifie que je dois rajouter mes interfaces dans les uses du module.
    En aucun cas tu n'a besoin de référencé ta "Fiche" dans ton datamodule.
    C'est bien pour cela que je te propose de passer en paramètre "combobox.items".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    procedure tdm.donneLibelleTheme(Items : TStringList; MaxLibelle : integer = 15):string;
    var
      i               : integer;
      req, theme : string;
    begin
      req:='select libelle from theme';
      dm.dsTmp.CommandText:=req;
      dm.dsTmp.Active:=true;
     
      Items.Clear;
      i:=1;
      dm.dsTmp.First;
      While (Not dm.dsTmp.Eof) and (i<=MaxLibelle) do
      begin
         Items.Add(dm.dsTmp.Fields[0].AsString);
         dm.dsTmp.Next;
         inc(i);
      end;
         dm.dsTmp.Active:=false;
    end;
    Ceci dit Malatar n'a pas tort voire a raison !
    Le TDBLookupComboBox est fait pour cela.

    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2006, 15h30
  2. déployer une appli delphi via le web
    Par kadim1969 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/02/2006, 12h44
  3. passage de pointeurs entre appli delphi et DLL c++
    Par e-teo dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 21h46
  4. creér un user sous interbase avec appli delphi
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/08/2004, 12h37
  5. Utilisateurs d'une appli delphi+paradox
    Par Jacques Deyrieux dans le forum Paradox
    Réponses: 2
    Dernier message: 11/12/2002, 18h41

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