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
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
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 :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
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.
alors puisque j'ai des tables Paradox, dites moi comment à partir du programme je supprime et je recrée une table
salut
Pour Paradox j'utilise :
il me semblait que ce code était dans la FAQ mais je ne le trouve plus.
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;
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 :
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBCC CHECKIDENT (MaTable,RESEED,0)
excuses-moi mais j'ai pas compris le rapport entre la table et le code que tu viens de poster!
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 :
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part setAutoInc('C:\Database\MaTable.DB',0)
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.
@+.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager