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 :

Erreur d'affichage dans un StringGrid


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut Erreur d'affichage dans un StringGrid
    Bonjour,

    J'ai un StringGrid sur ma Form.

    Je fais appel à une procedure pour lire ma base Access et afficher valeurs dans les cellules du StringGrid.

    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
     
    procedure TFormPlanning.LireBDE;
    var col,lig:integer;
    begin
        with DM.ADOTableConges do
          begin
              First;
              for lig:=1 to StringGrid1.RowCount-1 do
                for col:=0 to StringGrid1.ColCount-1 do
                  begin
                      StringGrid1.Cells[col,lig]:=FieldByName('Cellule').AsString;
                      next;
                  end;
          end;
    end;
    Je fais appel à une procedure pour enregristrer les cellules dans ma base Access.
    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
    26
    27
    28
    29
    30
    31
    32
    33
     
    procedure TFormPlanning.EnregistrerBDE;
    var col,lig,pourcentage:integer;
    begin
        {Vider la table Access}
        with DM.ADOQuery1 do
          begin
              SQL.Clear;
              SQL.Add('delete FROM Conges');
              ExecSQL;
              close;
          end;
     
        {Ajouter les enregistrements}
        pourcentage:=round(100/DM.ADOTableDelegue.RecordCount);
        with DM.ADOTableConges do
          begin
              First;
              for lig:=1 to StringGrid1.RowCount-1 do
                begin
                    for col:=0 to StringGrid1.ColCount-1 do
                      begin
                          Append;
                          FieldByName('Cellule').AsString:=StringGrid1.Cells[col,lig];
                          Post;
                      end;
                    gauge1.Progress:=gauge1.Progress+pourcentage;
                end;
          end;
     
        gauge1.Progress:=100;
        ShowMessage('Enregistrement effectué');
    end;
    Le probleme : je vais enregistrer, lire, plusieurs fois de suite sans aucun soucis. Et sans savoir pourquoi, des fois, mes valeurs vont etre décalées.
    pouquoi ?

    Merci

    PS : Je ne sais pas si c'est le bon forum : Base de données ou débutant

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Sache qu'il existe le TDBGrid !
    Tu nommes tes fonctions BDE et tu utilises de l'ADO, voilà un code qui semble cohérent, cela ne donne pas envie de le lire !

    utilise les valeurs de FixedRow et FixelCol comme indice de départ au lieu de 0 ou 1 en dur !
    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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Sache qu'il existe le TDBGrid !
    Effectivement, c'est par là que j'ai commencé.
    Sauf que le probleme est que j'utilise un tableau qui a plus de 255 colonnes. Et Access ne gère pas plus de 255 champs (sauf erreur de ma part). D'où l'utilisation d'un stringgrid.
    Je me doutes que ce n'est pas la meilleure solution mais pour mon niveau, c'est la seule que j'ai trouvé.

    utilise les valeurs de FixedRow et FixelCol comme indice de départ au lieu de 0 ou 1 en dur !
    Je ne comprends pas, j'ai quand meme fait F1 (aide de Delphi) : Affectez une valeur à la propriété FixedCols pour créer ou supprimer des colonnes figées.
    Je n'ai besoin que de la premiere ligne ou colonne figée ...

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    255 Colonnes !
    Mais à quoi cela peut-il bien servir d'afficher autant de colonnes (il faut utiliser le scroll horizontal, c'est pénible)
    Mieux vaut une grille avec 10 colonnes, les plus utiles puis une Fiche qui fourni le détail !

    Sinon, un SQL ne peut-il pas faire la jointure de deux tables et dépasser la limite des 255 colonnes ?

    Pour FixedRow, FixelCol c'était pour mettre dans lig:=1 comme ceci lig:= StringGrid1.FixedRow, ce juste si demain, cela change, tu n'auras pas a vérifier toutes tes boucles !
    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
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    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 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonsoir,

    AMHA, avant de donner 2 bouts de code, il faudrait que
    1) tu expliques ce que tu veux faire
    2) tu decrives ton modèle de données
    Ensuite que
    1) tu indiques comment est initialisé ton Stringgrid
    2) tu donnes (si possible) un cas ou un jeu d'essai provoquant le défaut

    Sinon, j'ai bien peur que les conseils que l'on t'apportera ne soit pas adapté.
    --
    Philippe.
    Philippe.

Discussions similaires

  1. Erreur d'affichage dans un displaysField
    Par abraxis dans le forum Ext JS / Sencha
    Réponses: 7
    Dernier message: 24/01/2012, 11h33
  2. Erreur d'affichage dans les boite de dialogue windows
    Par DEVELSI dans le forum Windows
    Réponses: 3
    Dernier message: 26/06/2007, 08h31
  3. erreur d'affichage dans template
    Par alexorcet dans le forum Langage
    Réponses: 13
    Dernier message: 04/12/2006, 22h27
  4. [debutant]Erreur d'affichage dans le navigateur
    Par romca dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/06/2006, 10h21
  5. [MySQL] Erreur d'affichage d'un listing php dans un html
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/04/2006, 22h13

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