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

Langage Delphi Discussion :

Une boucle While qui ne fonctionne pas


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut Une boucle While qui ne fonctionne pas
    Bonjour à tous,

    J'ai un problème de while pour une base de donnée utilisant un TTable. Je cherche à supprimer tout le contenu de la table utilisé dans la base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //On se place sur le premier enregistrement
         Table1.First;
         //On fait une boucle pour parcourir toute la table
         While not (Table1.EOF) do
         begin
              Table1.Delete; //on supprime l'enregistrement
              Table1.Next;   //on passe au suivant
         end;
    Le problème c'est que je suis obligé de cliquer à chaque fois sur mon bouton "tout supprimer" car il ne supprime qu'un seul enregistrement à la fois.

    Je suis débutant en delphi je n'ai commencé il y a que 3 jours, et j'avoue ne pas comprendre pourquoi mon while ne fonctionne pas.

    Merci à ceux qui vont me répondre et au revoir.

    Cordialement

    PS: je n'ai pas trop le temps de chercher je suis au travail, je n'ai cependant rien trouvé pendant ma recherche.

  2. #2
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Nous aussi on est au travail et on n'a pas trop le temps de chercher :

    Issu de la la FAQ Comment vider une table

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Dans tous les cas le code ne peut fonctionner:
    - une fois le delete effectué, l'enregistrement n'existe plus, donc que va faire le next?

    Après lecture de l'aide, je supprimerai simplement le Table1.Next, ça devrait fonctionner. Quelle base de données?

    Sinon utiliser un TTable est en général à éviter.

  4. #4
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Si on regarde l'aide sur DELETE :

    Resynchronise l'ensemble de données pour rendre actif le prochain enregistrement non supprimé.Si l'enregistrement suppriméétait le dernier enregistrement de l'ensemble de données,l'enregistrement précédent devient alors l'enregistrement en cours.
    2 réflexes à avoir : F1 + FAQ

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    PS: je n'ai pas trop le temps de chercher je suis au travail
    Vraiment, vraiment c'est pas cool

    1 Ce n'est pas un problème de WHILE

    2 c'est plus simple de faire une requête de suppression en SQL que quelque chose qui supprime 1 ligne à la fois

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur delphi junior
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur delphi junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Merci de vos réponses.
    @Fxg : Je ne voulais pas vexé en disant que je suis au travail. Encore merci pour l'aide (l'aide delphi ne fonctionne pas sur nos poste de travail, c'est pour cela que je me permet de poster sur le forum)

    @Linkin : Merci j'ai enlevé le Table1.Next et cela fonctionne correctement. Je suis obligé d'utiliser les TTable par choix de mon entreprise.

    Cordialement

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    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 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Rien n'empêche d'utiliser un TQuery pour un faire un DELETE
    TQuery et TTable utilise tous les deux le BDE, ne te prive surtout pas du TQuery !
    Ton entreprise a choisi le BDE, tu as donc d'autres composants comme le TDataBase qui font parti de cette lib !

    Ce que tu ne peux pas utiliser c'est TADOQuery, TADOTable, TIBQuery ... eux font parti des autres familles de composants DB

    Le piège du Delete qui effectue un Next implicite est un piège classique, y être confronté au bout de 3 jours, ce n'est pas courant

    Citation Envoyé par seremei Voir le message
    l'aide delphi ne fonctionne pas sur nos poste de travail, c'est pour cela que je me permet de poster sur le forum
    Même pour un vieux Delphi, l'aide en ligne de XE3 contient des infos intéressantes
    Si tu es sur Seven\Vista, il suffit d'installer WinHLP32.exe ou WinHLP64.exe pour utiliser l'aide en HLP

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/09/2019, 16h45
  2. Boucle do loop while qui ne fonctionne pas
    Par nahamed dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2015, 11h52
  3. une fct modification qui ne fonctionne pas !
    Par hindou90 dans le forum C
    Réponses: 2
    Dernier message: 07/02/2010, 01h18
  4. une boucle for qui ne fonctionne pas
    Par piffeo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/11/2008, 21h52
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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