请问如果用代码实现将access数据库一次全部清空,并且自动编号字段的值也重新从1开始计算?等于是执行了压缩和修复数据库操作.

解决方案 »

  1.   

    ADOTable1.First ;
    while not adotable1.eof do
        adotable1.Delete ;
      

  2.   

    delete from table where [...]
      

  3.   

    参考
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=402859
      

  4.   

    SQL SERVER有个命令truncate table可以做到这一点,
    access我就不知道了,
    或者
    select into tmptable from tbl where 1=1
    drop table tbl
    select into tbl form tmptable where 1=1
    drop table tmptable
      

  5.   

    我用如下代码进行数据库压缩的时候,怎么并没有压缩啊?大小没变啊!CompactDatabase函数有问题吗?
    var zz:OLEVariant;
    begin
    datamodule1.adoconnection1.Close;
    screen.Cursor:=crHourGlass;
    zz:=CreateOleObject('zz.DBEngine.36');
    zz.CompactDatabase('capture.mdb','temp.mdb');
    DeleteFile('capture.mdb');
    RenameFile('temp.mdb','capture.mdb');
    datamodule1.adoconnection1.Open;
    datamodule1.adotable1.Active:=true;
    screen.Cursor:=crDefault;
    end;
      

  6.   

    blucecat(一言 稀音) 的方法刚才我也想到了,觉得有道理,不过我上面对数据库进行压缩的代码为什么不能达到压缩效果呢?
      

  7.   

    没有我试过很多次了,在access里面直接选择"压缩或修复",哪怕只有1M的内容,也可以压到以前的3/4左右,现在我已经几十M了,一点变化都没有,不可能!请执教算法的问题!急求!
      

  8.   

    datamodule1.adotable1.first;
    while not datamodule1.adotable1.eof do
    datamodule1.adotable1.delete;
    datamodule1.adoconnection1.Close;
    screen.Cursor:=crHourGlass;
    dao:=CreateOleObject('DAO.DBEngine.36');
    dao.CompactDatabase('capture.mdb','temp.mdb');
    DeleteFile('capture.mdb');
    RenameFile('temp.mdb','capture.mdb');
    datamodule1.adoconnection1.Open;
    datamodule1.adotable1.Active:=true;
    screen.Cursor:=crDefault;
    end;