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 :

Compteur Remis à zéro


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Compteur Remis à zéro
    Salam
    j'ai un champs auto-incrément que je veux remtre à zéro après chaque vidage de la table!
    Car actuellement, il augmente sans arrêt, même après vidage de la table.
    y'a t-il une astuce ?
    Merci

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ca dependra du SGBD et s'il existe un système qui permet de la faire, par exemple, avec Access il est possible de compacter la base de données (ce qui remet les compteur à zéro, nettoie, etc ...).
    Sinon il faut détruire la table et la recréer
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 156
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    A ma connaissance, avec une table paradox, le seul moyen de remettre à zéro un champs auto incrémenté, est de créer une nouvelle table ! C'est tout à fait logique, car c'est un champs géré par paradox, et dont tu n'as pas à te soucier.

    Dans ton cas, étant donné que tu vides la table, ce serait peut être aussi simple de la supprimer et de la recréer, plutôt que de la vider... sauf évidemment si en supprimant chaque enregistrement, tu en profites pour faire d'autres traitements.

  4. #4
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    alors puisque j'ai des tables Paradox, dites moi comment à partir du programme je supprime et je recrée une table

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    salut

    Pour Paradox j'utilise :
    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
     
    unit UbsDBUtils;
     
    interface
    uses
      classes,
      Sysutils;
     
    procedure setAutoInc(sFilename : string; iValeur:Longint);
    function GetAutoInc(sFilename : string): Longint;
     
    implementation
     
    function GetAutoInc(sFilename : string): Longint;
    var
       myStream : tFileStream;
    begin
       result := -1;
       myStream := tFileStream.create(sFileName, fmOpenRead + fmShareExclusive);
       myStream.Seek(73, soFromBeginning);
       //myStream.WriteBuffer(iValeur, 4);
       myStream.ReadBuffer(result,4);
       myStream.Free;
    end;
     
    procedure setAutoInc(sFilename : string; iValeur:Longint);
    var
       myStream : tFileStream;
    begin
       myStream := tFileStream.create(sFileName, fmOpenWrite + fmShareExclusive);
       myStream.Seek(73, soFromBeginning);
       myStream.WriteBuffer(iValeur, 4);
       myStream.Free;
    end;
    il me semblait que ce code était dans la FAQ mais je ne le trouve plus.


    Pour MS-SQL utilise DBCC CHECKIDENT de Transact SQL. Par contre je n'ai jamais appelé des fonctions de Transact SQL depuis Delphi.
    DBCC CHECKIDENT (<Nom de table>,RESEED,<Valeur pour autoinc>), plus d'info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKIDENT (MaTable,RESEED,0)
    a+

  6. #6
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    excuses-moi mais j'ai pas compris le rapport entre la table et le code que tu viens de poster!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    re,

    Si tu imlementes la procedure setAutoInc(sFilename : string; iValeur:Longint) alors cette procedure permet d'affecter la valeur iValeur à l'auto-increment de la table paradox sFilename. Attention il faut donner le chemin complet du fichier *.db correspondant à ta table paradox.

    Par exemple, pour re-initialiser l'auto-increment de la table C:\Database\MaTable.DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setAutoInc('C:\Database\MaTable.DB',0)
    a+

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut champ auto - incrémentable
    Pour ce qui est de ton champ auto-incrémentable, je te suggère d'aller vers la structure de la table, au niveau du module base de données, et de définir la valeur min à 1.
    essaye-le.
    @+.

Discussions similaires

  1. Tableau remis à zéro tous les jours
    Par groskanel dans le forum Langage
    Réponses: 56
    Dernier message: 06/01/2010, 12h31
  2. Réponses: 2
    Dernier message: 10/12/2009, 00h01
  3. [MySQL] Date et heure remis automatiquement à zéro sous Mysql
    Par cinou01 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 27/03/2009, 21h03
  4. Réponses: 9
    Dernier message: 26/07/2007, 12h50
  5. remettre à zéro un compteur sql
    Par luimême dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/01/2006, 11h35

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