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 :

TClientDataSet Supprimer les enregistrements vides


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 260
    Points : 171
    Points
    171
    Par défaut TClientDataSet Supprimer les enregistrements vides
    Bonjour,

    J'essaye de supprimer les enregistrements vides d'un ensemble de données XML (TClientDataSet), Mais il y a quelque chose qui m'échappe, ma procédure elle ne tourne pas rond elle me supprime tous les enregistrements.

    1: On parcourt les enregistrements. (while not ClientDataSet.Eof).
    2: On définie la variable (CheckEmpty = True) Champs vides par défaut.
    3: On parcourt les champs (For ClientDataSet.IndexDefs.Count).
    4: On vérifie que le champ n'est pas vide, Si le champ n'est pas vide (CheckEmpty = False).
    5: Si (CheckEmpty = True) les champs sont vides, on supprime l'enregistrement.

    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
    34
    35
    procedure TForm1.Button2Click(Sender: TObject);
    var
      IField: Integer;
      CheckEmpty: Boolean;
    begin
      if ClientDataSet.Active then
      begin
        ClientDataSet.DisableControls;
        ClientDataSet.First;
     
        while not ClientDataSet.Eof do
        begin
          CheckEmpty := True; { Champs vides par défaut }
     
          for IField := 0 to ClientDataSet.IndexDefs.Count - 1 do { On parcourt les champs }
          begin 
            if ClientDataSet.Fields[IField].AsString <> EmptyStr then
              CheckEmpty := False; { Le champ n'est pas vide }
          end;
     
          if CheckEmpty then
          begin
            try { Supprimer l'enregistrement }
              ClientDataSet.Delete;
            except
              ClientDataSet.Next;
            end;
          end
          else
            ClientDataSet.Next;
        end; { while } 
     
        ClientDataSet.EnableControls;
      end;
    end;
    Merci.
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  2. #2
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    "ClientDataSet.FieldCount" et non "ClientDataSet.IndexDefs.Count"
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    un petit break juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if ClientDataSet.Fields[IField].AsString <> EmptyStr then CheckEmpty := False; { Le champ n'est pas vide }
     if not CheckEmpty then break;
    permettra un petit gain de temps
    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é Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    un petit break juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if ClientDataSet.Fields[IField].AsString <> EmptyStr then CheckEmpty := False; { Le champ n'est pas vide }
     if not CheckEmpty then break;
    permettra un petit gain de temps
    Merci SergioMaster.
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

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

Discussions similaires

  1. Supprimer les lignes vides avec Notepad++
    Par Monstros Velu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 25/04/2009, 01h16
  2. Réponses: 1
    Dernier message: 12/12/2006, 12h00
  3. Supprimer les lignes vides d'un document Word
    Par Jerfa dans le forum VBA Word
    Réponses: 4
    Dernier message: 28/08/2006, 16h12
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. supprimer les lignes vides?
    Par VinnieMc dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 14h01

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