Bonjour,
Je cherche à savoir comment faire pour définir (forcer) la valeur de l'auto incrément d'un champ (clé primaire) dans une table en Delphi5.
J'utilise ce bout de code utilisant Jet Engine trouvé sur delphi.about.com pour compacter la base de données access :
En appelant cette fonction, je réinitialise la valeur de l'auto incrément à 1 de plus que la valeur du plus grand index. Donc si auparavant j'ai vidé la table avec un DELETE FROM MaTable je remet l'auto incrément de la clé à 1.
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 function CompactDatabase (const sdbName: string) : boolean; var JE : TJetEngine; //Jet Engine sdbTemp : string; //TEMP database sdbTempConn : string; //Connection string const SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source='; begin Result := False; sdbTemp := ChangeFileExt(sdbName, '.tmp'); sdbTempConn := SProvider + sdbtemp; if FileExists(sdbTemp) then DeleteFile(PChar(sdbTemp)); JE := TJetEngine.Create(nil); try try JE.CompactDatabase(SProvider + sdbName, sdbTempConn); DeleteFile(PChar(sdbName)); RenameFile(sdbTemp, sdbName); Result := True; except on E:Exception do ShowMessage(E.Message); end; finally JE.FreeOnRelease; end; end;
Maintenant j'aimerai pouvoir fixer cette valeur d'auto incrément (sur une table vide) à une valeur arbitraire (par exemple 20000). Comment pourrais-je procéder, sachant qu'avec une connexion de type ADOQuery je ne peux utiliser que des requêtes du type INSERT, UPDATE ou DELETE. Donc pas de ALTER ou autre comme en MySQL par exemple.
Merci d'avance pour toute proposition,
CardinalJo
Partager