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 :

afficher base de donné &firebir&delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de fifi_dz
    Inscrit en
    Janvier 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 54
    Points : 69
    Points
    69
    Par défaut afficher base de donné &firebir&delphi
    slt
    je travaille sous le delphi 2010 la base de donné sous firebird et les composant s UIB pour accéder a la base de donné
    je voulais tester l'affichage de la base de donné dans un stringGrid mais kand je l'éxecute et je click sur le button , on m'affiche rien
    ps: j'ai testé la base de donné si elle est bien connecté , tout est bien
    peut etre vous avez une idée différente sur ce que je fais
    voisi le code que j'ai implémenté:

    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
    22
    23
    24
    25
    procedure TForm1.Button1Click(Sender: TObject);
    var
       i:integer;
     
    begin
    i:=1;
    Query.Close();
    Query.SQL.Clear;
     
    Query.SQL.Add('SELECT NOM,PRENOM FROM ESSAIE1' );
     
    Query.Open();
     
         Grid.RowCount:=2;
      while Not Query.Eof do
        begin
          Grid.Cells[0,i]:=Query.Fields.ByNameAsString['NOM'];
          Grid.Cells[1,i]:=Query.Fields.ByNameAsString['PRENOM'];
             Inc(i);
          Grid.RowCount:=Query.Fields.RecordCount+1;   Query.Next;
     
        end;
     
       Query.Close();
    end;

  2. #2
    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
    utilises le composant dbgrid dans la palette DataControl c'est plus simple.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    ca coince ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Grid.RowCount:=Query.Fields.RecordCount+1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grid.RowCount:=Grid.RowCount+1;
    serait plus indiqué .

    sans tester , j'aurais plutôt fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      i:=0;  // << si il y a libellés i:=1  
     Grid.RowCount:=Query.Fields.RecordCount+i+1;  // ceci dans le cas ou TOUT les enregistrements sont récupérés 
     
      while Not Query.Eof do
        begin
          Inc(i);
    //      Grid.RowCount:=i;  ici on est sur d'avoir le bon nombre de recordcount ^^
          Grid.Cells[0,i-1]:=Query.Fields.ByNameAsString['NOM'];
          Grid.Cells[1,i-1]:=Query.Fields.ByNameAsString['PRENOM'];
          Query.Next;
        end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    mais pourquoi stringGrid?
    tu as dbgrid qui fait tout et tout simplement.
    sauf si tu veux autres choses ...
    Deux personnes n'apprennent pas, un arrogant et un timide.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    bonjour

    Je fais exactement la meme chose et ca marche, mais en ajoutant une ligne a la fois

    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
    22
    23
     
     
    Grid.RowCount:= 1; // je suppose des en-tetes de colonnes
    Grid.ColCount:= 2;
     i:=0;  // << si il y a libellés i:=1  
     
     
    // Grid.RowCount:=Query.Fields.RecordCount+i+1;  // ceci dans le cas ou TOUT les enregistrements sont récupérés 
     
      while Not Query.Eof do
        begin
          Inc(i);
          Grid.addrow; // je prefere ajouter une ligne a la fois, cela evite un row count qui prend du temps ... 
    //      Grid.RowCount:=i;  ici on est sur d'avoir le bon nombre de recordcount ^^
     
    // i-1 s'il n'y a pas d'en-tetes de colonne
          Grid.Cells[0,i]:=Query.Fields.ByNameAsString['NOM'];
          Grid.Cells[1,i]:=Query.Fields.ByNameAsString['PRENOM'];
          Query.Next;
        end;
     
     
    // fin de la transaction
    je prefere cela a utiliser les Dbgrid pour mieux gerer les transactions, mais peut etre est ce une erreur

    a+
    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    Je crois avoir entendu que les composants UIB ne sont pas bidirectionnels. C'est peut être pour que fifi_dz utilise un StringGrid.

    Pour le reste, la solution de SergioMaster est correcte à un détail prés !
    J'aurai mis cette ligne en fin de boucle et sans le Fields et sans le +i.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Grid.RowCount := Query.RecordCount + 1;

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Je suis contre le query.recordcount d'une manière générale et ce pour la même raison qu'olivier (et effectivement le StringGrid.Addrow est une alternative) , d'où la mise en garde et les commentaires

    J'aurai mis cette ligne en fin de boucle et sans le Fields et sans le +i.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grid.RowCount:=Query.Fields.RecordCount+i+1
    effectivement une erreur pernicieuse s'est glissée ici évidemment il fallait lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grid.RowCount:=Query.RecordCount+i
    si je l'ai mis au début c'est pour initialiser la StringGrid
    le +i est là pour gérer des libellés sur une voire plusieurs lignes
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Création de la base de données en firebired 2.0.7
    Par Zizou7 dans le forum Firebird
    Réponses: 3
    Dernier message: 05/03/2013, 12h32
  2. Afficher Base de données dans une Datagrid
    Par holdboy dans le forum C#
    Réponses: 0
    Dernier message: 09/06/2009, 19h06
  3. Base de données et citrix pour delphi
    Par wikimeta dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/01/2008, 16h24
  4. Event sur base de donnée Firebird et programmation delphi
    Par seb8810 dans le forum Connexion aux bases de données
    Réponses: 5
    Dernier message: 16/03/2006, 17h06
  5. Développer une base de données sans BDE dans DELPHI 3 PRO
    Par ndlh721 dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/02/2005, 14h21

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