挺烦的,怎么让access数据库中删除的记录号依序递增阿?(30分)

  • 主题发起人 主题发起人 狼牙
  • 开始时间 开始时间

狼牙

Unregistered / Unconfirmed
GUEST, unregistred user!
挺烦的,怎么让access数据库中删除的记录号依序递增阿?
001,002,003,删掉003后,再加的都是004了。气死了。怎么解决阿???
 
是比较烦。前一段时间我也碰到这样的问题。
下面给点建议:
如果是用INTERBASE的话,就好做点。用触发器实现。
因为在ib中,每种触发器都分before,after,就是在操作数据前/后触发自己写的语句。
这样的话,就可以自己控制数据库中的记录号是按次序的。
去参考一下速达进销存3000的后台。
 
我觉得该是003没有被删除掉。而只是作了个删除标记,如何去掉删除标记,谁知道?
 
这个充号是数据库自动增加的吧,没有办法,如果你让它自动增加,数据库内部有个识别种
子,这个数是只会增加不会减少的,唯一的办法是不让他自动增加,即你手工给值,但要注
意,不能重复,避免插入记录失败。不过我想知道,这个序号是否连续,对你很重要吗?

 
其一,想明白删除标记的恢复是否代表记录的恢复。而如何恢复删除标记,就可以通过
自动序号表现出来。
其二,美观!
其三,气愤。
呵呵,征求,解决方案。。。
 
把数据库结构中的id删掉,载插入个新的id,最完美的办法了,嬉嘻
 
数据库内部有个识别种子,这个东西,你可以设他的初值、步长;可以查询他的当前值,
但不能修改他的当前值。
所以,如果你用自动递增字段,那你死心吧。
 
access数据库中删除记录只是“伪”删除(做删除标记),没有真正物理删除。
你可以在添加新记录之前压缩一下数据库,给你一段代码试试。

procedure TMainFm.actPackExecute(Sender: TObject);
var
ovDAO: OleVariant;
DBFileName: string;
begin
DataDm.ADOConnection.Connected := False; //压缩之前要关闭数据库
DBFileName := YourMdbPath&Name;
ovDAO := CreateOleObject('jro.JetEngine');
ovDAO.CompactDataBase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName);
end;
 
to eman
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ovDAO: OleVariant;
DBFileName: string;
DBFileName2: string;
begin
ADODataSet1.Active := False; //压缩之前要关闭数据库
// DBFileName := YourMdbPath&Name;
DBFileName :='testworf.mdb';
DBFileName2 :=testworf2.mdb';
ovDAO := CreateOleObject('jro.JetEngine');
ovDAO.CompactDataBase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName2);
end;

好像没有用阿。
 
对不起,老大,上次没实做,这次贴全了:)
先压缩创建一个新文件,然后再覆盖原文件就行,Access也是这么干的。

procedure TForm1.Button1Click(Sender: TObject);
var
ovDAO: OleVariant;
DBFileName, DBFileName1: string;
begin
ADOConnection1.Close; //压缩之前要关闭数据库
DBFileName := 'D:/Cost2001/System/Catalog.mdb';
DBFileName1 := 'D:/Cost2001/System/Catalog.$$$';
ovDAO := CreateOleObject('jro.JetEngine');
ovDAO.CompactDataBase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ' + DBFileName1);
CopyFile(PChar(DBFileName1), PChar(DBFileName), False); //覆盖原文件
DeleteFile(DBFileName1); //删除临时文件
ADOTable1.Open;//重新开表
end;
 
后退
顶部