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 702
    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 702
    Points : 25 568
    Points
    25 568
    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 !

  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 702
    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 702
    Points : 25 568
    Points
    25 568
    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 !

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    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 786
    Points : 5 918
    Points
    5 918
    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.

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, 12h33
  2. Erreur d'affichage dans les boite de dialogue windows
    Par DEVELSI dans le forum Windows
    Réponses: 3
    Dernier message: 26/06/2007, 09h31
  3. erreur d'affichage dans template
    Par alexorcet dans le forum Langage
    Réponses: 13
    Dernier message: 04/12/2006, 23h27
  4. [debutant]Erreur d'affichage dans le navigateur
    Par romca dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/06/2006, 11h21
  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, 23h13

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