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

 Delphi Discussion :

Effacement de fiches dans un DBGrid


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Effacement de fiches dans un DBGrid
    Bonjour !

    En examinant une table au format dBase utilisée par un composant DBGrid, j'ai constaté que les enregistrements effacés sont simplement marqués pour effacement, mais toujours présents sur le disque. Existe-t-il une méthode pour les effacer définitivement, ou n'y a t-il pas d'autre moyen que de recopier la table dans une autre table en ne conservant que les enregistrements valides ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 196
    Points : 41 425
    Points
    41 425
    Billets dans le blog
    63
    Par défaut
    En fait pour vraiment effacé les enregistrements supprimés , il te faut 'compacter' la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Compacte(Tbl: TTable;NomTable: string);
    var debut: string;
    begin
       Tbl.Close;
       Tbl.TableName:=NomTable;
       Tbl.Exclusive := True;
       Tbl.Open;
       DbiPackTable(Tbl.dbHandle, Tbl.Handle, PChar(NomTable), 'dbase', True);
       Tbl.Close;
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    En fait pour vraiment effacé les enregistrements supprimés , il te faut 'compacter' la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
       DbiPackTable(Tbl.dbHandle, Tbl.Handle, PChar(NomTable), 'dbase', True);
    Je suis un dinosaure avec Delphi 2 ;-) , et DbiPackTable n'existait pas encore. Et ne semble pas exister non plus dans TurboDelphi que je viens d'installer... Mais ce n'est pas grave, car la table contiendra une centaine d'enregistrements et évoluera très peu (et plus en ajout qu'en suppression).

    En tout cas, merci de tes conseils.

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut;

    effectivement car l'unité encapsulant DbiPackTable doit être ajouté dans la partie uses mais je ne me souviens plus de son nom, peut-être un petit F1 te guidera .

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    De mémoire ces unités sont: DBTables et BDE. Mais avec Delphi2 je ne garantie rien.

    @+

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 196
    Points : 41 425
    Points
    41 425
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par Foxie Voir le message
    Je suis un dinosaure avec Delphi 2 ;-)
    ce que j'indiquais était D3 , donc très proche du crétacé

    @Claudius je confirme qu'aucun trouble de mémoire ne t'affecte
    DBTables et BDE dans les uses

    sinon , carrément venant de l'ère primaire

    1. Add the following units to our uses clause: DBITYPES, DBIPROCS and DBIERRS.

    2) Then call the BDE function as follows:

    DBIPackTable(Table1.DbHandle, Table1.Handle, 'TABLENAME.DBF', szDBASE, TRUE);

    { This code came from Lloyd's help file! }
    ça peut toujours servir de le remettre sur le forum il y a peut être toujours des trilobites

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. Données dans une DBgrid
    Par camino dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/02/2004, 03h40
  3. [Drag & Drop] Mettre une fiche dans un panel
    Par corwin_d_ambre dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/01/2004, 10h46
  4. Effacer une ligne dans la table nat
    Par vbcasimir dans le forum Sécurité
    Réponses: 2
    Dernier message: 11/01/2004, 00h15
  5. lenteur d'affichage de requete dans un DBGrid
    Par nico27 dans le forum InterBase
    Réponses: 9
    Dernier message: 23/06/2003, 13h54

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