首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

D6+Access2000 关于清空数据表时 重新设置 自动编号 的有关问题

2012-03-19 
D6+Access2000 关于清空数据表时 重新设置 自动编号 的问题我在清空数据库时为了使自动编号的字段也清空,

D6+Access2000 关于清空数据表时 重新设置 自动编号 的问题
我在清空数据库时为了使     自动编号   的字段也清空,重新设置了字段
但是
    adoconnection1.Open;
    adoquery1.Close   ;
    adoquery1.SQL.Clear   ;
    adoquery1.SQL.Add( 'alter   table   [OLCheck_Image]   alter   COLUMN[Image_ID]   COUNTER(1,1) ');
    adoquery1.ExecSQL;
   
会出现 "无效的字段数据类型"的提示,经过网上查找,发现之前必须要收缩数据库才可以,请问这是什么原因??

另外,我在access中收缩数据库后,上面代码没有问题,但是我用程序进行收缩以后,还会出现以上的问题,不知道这是怎么回事,请大家帮忙看看

这是收缩数据库的代码  

g_DBFilePath   :=   ExtractFilePath(ParamStr(0));   //得到可执行程序的路径
    try
        DeleteFile(g_DBFilePath+ 'OLCheck.ldb ');
    except
    end;
    CompactAccess:=CreateOleObject( 'JRO.JetEngine ');
    try
        ComPactAccess.CompactDatabase( 'Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=OLCheck.mdb ', 'Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=OLCheckTemp.mdb;JetOLEDB:EncryptDatabase=True ');
        DeleteFile(g_DBFilePath+ 'OLCheck.mdb ');
        RenameFile(g_DBFilePath+ 'OLCheckTemp.mdb ',g_DBFilePath+ 'OLCheck.mdb ');
        showmessage( '维护数据库完毕! ');
    except
        showmessage( '请重新启动计算机后再次运行维护程序 ');
    end;

[解决办法]
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;


///必须先清空表记录

热点排行