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 :

[dbexpress et dbgrille] Comment remplir une dbgrille dans le code ?


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut [dbexpress et dbgrille] Comment remplir une dbgrille dans le code ?
    Bonjour!

    J'aimerais savoir comment remplir un dbgrille dans le code sans déposer un composant datasource sur la feuille.

    J'utilise un composant TSQLConnection que je crée dans le code.
    J'utilise alors la méthode execute du composant TSQLConnection, qui retourne un objet Pointer (le dernier argument de la liste).

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    utilise un TStringgrid
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut [dbexpress et dbgrille] Comment remplir une dbgrille dans le code ?
    En fait, si j'utilise un TStringGrid, je vais devoir faire une boucle pour le remplir dans le code.

    Avec un dbgrid, il me faut simplement trouver le moyen d'affecter l'ensemble de donnée (DataSet) de la source de données (Datasource) du DBGrid avec l'ensemble de données résultats de ma requête (qui se trouve dans l'objet pointer).

    Mon problème c'est d'arriver à modifier le DataSource du DBGrid dans mon code.
    Merci pour ton aide

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Tdataset<-->Tdatsource<-->Tdbgrid, obligatoir
    si tu veux modifier ta requete dinamiquement aucun probléme, dbgrid refléte simplement les données qui existe dans le dataset, et Tdatasource sincronise les données enre Tdataset et les autres composant DB (TDBEDIT,TDBGRid,...)
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  5. #5
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut
    Tout a fait d'accord avec toi.

    Mais mon problème c'est justement que je veux modifier dynamiquement le DataSet du DataSource.

    J'utilise une fonction dans un DataModule qui permet d'exécuter les requête et de renvoyer les résultats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Tv_mdonnees.doSelect(strQuery: string; res:Pointer):boolean;
    begin
      try
        cnn1.Execute(strQuery, nil, res);
        result:=TRUE;
      except
        result:=FALSE;
      end;
    end;


    J'appelle alors cette fonction dans un formulaire, pour remplir le DataSet avec le résultat d'une requpête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_mdonnees.doSelect('SELECT * FROM country;', @self.dbgrid1.DataSource.DataSet)
    Le résultat est que rien ne s'affiche dans ma grille.
    La table contient bien des données.

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par mkiba Voir le message
    v_mdonnees.doSelect('SELECT * FROM country;', @self.dbgrid1.DataSource.DataSet)
    .

    je répéte une dbgrid refléte simplement des données existant dans une Tdataset en passant par une Tdatasource
    combien de dataset tu as?
    normalment il y as un seul datasource a qui une dbgrid est lier,
    tu peut simlement changer la requéte pour changer tt
    par example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function  TDataModule2.ExecSQL(s:string):integer;
    begin
         Query1.Close;
         Query1.SelectSQL.Text:=s;
         try
           Query1.Open;
           Result:=1;
         except
           Result:=-1;
         end;
    end;
    dis ce que tu veux exactement, en peut te donner des solutions plus simple, bon nuit
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut
    OK.

    J'Utilise ceci:
    un DBGRid => Un DatasSource => Un DataSet

    je créé le datasource dans le code:
    (dbgrid.datasource:= TDataSource.Create(self);


    je rempli le DataSet avec la fonction que je t'ai envoyée précédemment:
    DataModule.doSelect('SELECT * FROM Employee;', @(dbgrid.DataSource.DataSet));


    la requête revoie les données puisque dbgrid.DataSource.DataSet.RecordCount renvoie le nombre d'enregistrements contenus dans ma table.


    Le problème est que le dbgrid n'affiche pas les données (malgré un refresh du dbgrid et du dataset).


    NB:
    je créé le DataSource et je rempli le DataSet dan l'événement FormActivate du formulaire.

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par mkiba Voir le message
    OK.

    J'Utilise ceci:
    un DBGRid => Un DatasSource => Un DataSet

    je créé le datasource dans le code:
    (dbgrid.datasource:= TDataSource.Create(self);

    je rempli le DataSet avec la fonction que je t'ai envoyée précédemment:
    DataModule.doSelect('SELECT * FROM Employee;', @(dbgrid.DataSource.DataSet));

    et le Tdataset, tu la crée où?
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #9
    Membre du Club
    Profil pro
    ingénieur bases de données
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingénieur bases de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par edam Voir le message

    et le Tdataset, tu la crée où?



    Je créé le TDataSet dans le code.

    Mais j'ai résolu mon problème, il semble que le DBGrid ne peut pas afficher des données provenant d'un DataSet en avant seulement; Comme ceux de DBExpress.

    J'ai utilisé des Ensembles de Données ADO et ça marche.


    Merci à tous pour vos contributions.

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

Discussions similaires

  1. [XL-2007] Comment integrer une condition dans mon code sendkey
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2012, 16h36
  2. Comment interprété une EL dans un code JAVA
    Par geforce dans le forum JSF
    Réponses: 2
    Dernier message: 19/11/2011, 10h18
  3. comment inserer une image dans le code même
    Par SOPSOU dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/08/2007, 14h19
  4. Comment intégrer une image dans le code ?
    Par delphi+ dans le forum Delphi
    Réponses: 5
    Dernier message: 06/04/2007, 14h56
  5. Comment importer une DLL dans du code???
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 29
    Dernier message: 19/04/2006, 19h19

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