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 :

TQuery et taille des champs à afficher dans un DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut TQuery et taille des champs à afficher dans un DBGrid
    Voilà mon pb, j'ai une requête sql exécuté à l'aide d'un TQuery. Cette requête est affichée ensuite dans un DBGrid. Les paramètres du Select sont choisis par l'utilisateur, donc je ne peux pas donner la taille des colones, si le résultat est centré, etc. dans le DBGrid puisque je ne peux pas initialiser mon Grid (ou du moins je ne sais pas le faire). Du coup, quand j'exécute ma requête, j'ai un champs 'nom' par exemple dont la taille fait 50caractères, un champ prénom et idem... Les résultats ne sont pas centrés...

    Comment faire pour que mon Grid soit "beau" alors que je ne peux relier une colone de ce grid à un champs du Select vu que la requête est créer par l'utilisateur (il s'agit de statistiques, l'utilisateur choisi ce qu'il veut afficher en sortie, et il peut avoir grand nombre de possibilités).

  2. #2
    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
    Tu pourrais sauvegarder dans un fichier Ini le nom des champs et leurs tailles et lors de l'execution d'une requete si le nom du champ correspond tu le mets à jours. Comme çà si l'utilisateur fait toujours la même requete il aura la taille qu'il aura définit.

    Genre

    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
     
    var
      i : integer;
    begin
      // Requete
      With MaGrid do
      begin
        With TIniFile.Create(ChangeFileExt(Application.exeName,'.ini')) do
        try
          for i := 0 to ColCount-1 do
           Columns.Items[i].Width := ReadInteger('THEGRID',Columns.Items[i].Title.Caption,50);
        finally
          Free;
        end;
      end; // with
    end;
    A toi de faire la save de la taille des colonnes
    Modérateur Delphi

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

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut
    Merci de ta réponse. Mais il n'y a pas moyen de définir une taille des colonnes fixes au niveau du dbgrid ? Ou une taille de champs fixe dans la requête SQL ? Je doute fort pour la requête sql, je n'ai rien trouvé à ce sujet mais j'espère que c'est possible au niveau du grid.

    Sinon, je prefere éviter de programmer tout manuellement dans un INI, car il y'a vraiment beaucoup beacoup de champs. J'en ai pour plusieurs jours juste pour écrire et lire le fichier INI. En plus, les infos peuvent évoluer... Enfin si c'est la seule solution

  4. #4
    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
    Mise en place de ce que je te propose : 5mn

    1- Avant l'envoi de la requete que vérirfie le nombre de colonne de ta grid
    2- Tu sauvegardes dans un fichier ini :
    1. Nom Colonne = Taille colonne

    3- La execute ta requete
    4- Tu regardes dans le fichier ini si
    1. Nom Colonne = Taille colonne

    sinon tu mets par defaut 50 en taille

    je vois rien de bien compliquer à faire surtout que je t'ai déja developpé la 4em partie du code (tu as juste à l'adapter au nom de tes composants)
    Modérateur Delphi

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

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut
    Oui, vu comme ça, ce n'est pas bien compliqué. En gros, ce que tu me dis c'est d'écrire dans un fichier ini des infos de ce genre :

    [REQ1]
    Client =5
    Nom =30
    ..

    [REQ2]
    Conso = 50
    ....

    Et si REQ n'existe pas dans mon Fichier ini, je met 50. Mais par contre, le pb est le même puisque à je dois ajouter un champ par exemple Nom dans mon Grid et l'attacher au Query correspondant... En fait, je ne vois toujours pas comment lié mon grid à ma requête étant donné que si je met une taille par défaut dans les colones du GRID, à l'affichage j'ai bien toutes les lignes trouvés, mais la il n y'a rien d'écrit dans le contenu des cellules ni le titre de la colonne.

    J'espère que je ne suis pas trop flou dans mes explications

  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
    Pour lier un DbGrid a un TxxxQuery il te faut un datasource, après si tu ne mets pas en dur la liste des champs dans ton dbgrid, il créera automatiquement les colonnes.

    Sinon, je pense que tu n'as pas compris pour le fichier ini :

    1er requete:

    1- On sauve rien dans le Ini la grid est vide
    2- La personne fait une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Select Toto,Titi from LAtable
    3 - Le resultat d'affiche
    4- Dans le fichier Ini : Rien c'est la première requete donc on les champs se mettent pas à jours

    2em requete :

    1- Avant l'execution de la requete tu saves les infos de colonnes de l'ancienne requete donc dans le ini tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [MAGRID]
    Toto=25
    Titi=64
    2- La requete s'execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Select Tata,Toto from LaTable

    3- On cherche dans le Ini une correspondace avec un nom de champ (mais y a toto dedans ^^)
    4- On met a 25 le champ Toto

    ...

    x- sur on OnClose de ta form tu mets un save dans le ini de la derniere requete

    donc dans le Ini tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [MAGRID]
    Toto=25
    Titi=64
    tata=35
    Modérateur Delphi

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2014, 21h50
  2. Réponses: 9
    Dernier message: 12/03/2014, 21h28
  3. Ajuster la taille des champs dans un report
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2007, 16h14
  4. Taille des champs entres dans un stringGrid
    Par gilles641 dans le forum Composants VCL
    Réponses: 15
    Dernier message: 11/07/2005, 10h38
  5. Réponses: 2
    Dernier message: 14/04/2005, 21h57

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