線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4038
推到 Plurk!
推到 Facebook!

Access 的自動編號欄位內部 counter 可否歸零?

答題得分者是:wameng
jimmygump
一般會員


發表:8
回覆:12
積分:4
註冊:2003-09-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-19 01:08:20 IP:61.71.xxx.xxx 未訂閱
最近改用 Access 配合 Delphi 開發,用到不少的 "自動編號(autoincrement)" 型欄位。 在開發過程中,難免會產生一些測試記錄,自動編號的內部 counter 就會一直增加。 而當我要交件給客戶時,就算我把測試記錄都刪光了,這些自動編號欄位的內部 counter 仍然不會歸零。 過去在 SQL Server 時,總是在交件前產生一份 DDL(Data Definition Language) 的 SQL Script,然後再到客戶那邊重新執行那一份 DDL.SQL。這樣重建資料庫結構之後,所有的 IDENTITY 就歸零了。 請問,Access 裡面有類似的功能嗎?不會要我重新手動建立資料庫結構吧,或者要在 Delphi 中另外再寫一支一堆 CREATE TABLE 的程式呢? Access 不熟啊...請大家指點 Jimmy Gump
------
Jimmy Gump
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-19 01:15:05 IP:61.222.xxx.xxx 未訂閱
使用 Access 資料庫(MDB) >就算我把測試記錄都刪光了,這些自動編號欄位的內部 counter 仍然不會歸零。 您必須壓縮修復 MDB 後,才會真正刪除資料並重整歸零。 Procedure Compact_Repair_ADODatabase(DbName,MDB_PSWD: string); var DAO: OLEVariant; ConnectStr:Ansistring; begin DeleteFile(DBName '.bk'); DAO:=CreateOleObject('JRO.JetEngine'); ConnectStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'; if MDB_PSWD<>'' then ConnectStr := ConnectStr 'Jet OLEDB:Database Password=' MDB_PSWD ';'; ConnectStr := ConnectStr 'Data Source=' DbName; DAO.CompactDatabase (ConnectStr,ConnectStr '.bk'); DeleteFile(DBName); RenameFile(DbName '.bk',DbName); end;
jimmygump
一般會員


發表:8
回覆:12
積分:4
註冊:2003-09-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-19 09:43:52 IP:61.71.xxx.xxx 未訂閱
感謝哦,的確可以! Step1. 先自行刪除所有的記錄,讓每個 table 都清空。 Step2. 執行這個壓縮程式。 Step3. 再回去 Access 中測試新增,的確又都從 1 開始了。 Jimmy Gump
------
Jimmy Gump
johnber
一般會員


發表:2
回覆:9
積分:2
註冊:2003-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-26 13:21:34 IP:61.218.xxx.xxx 未訂閱
對不起, 插個花, 請教一下: 在 Access 環境中可以指定 "自動編號" 欄位的 "新值"(在 "設計檢視" 狀態下方的 "一般" 標籤頁) 為亂數. 請問在 Delphi 中以 MS Jet SQL 指令應如何下? CREATE TABLE table1(field1 ???) <-- 欄位型態應如何指定呢? 謝謝
系統時間:2024-06-29 14:04:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!