我用下面的语句
int CWljc20Dlg::Deldat(char datname[],char ny[])
{
char FileName[1024];
int iItem = 0;
CString str;
   CDaoDatabase*       m_pDB;
COleVariant TempFields;
sprintf((char *)FileName,"%sdatabase/file.mdb",path);
iItem=0;
m_pDB=new CDaoDatabase;
try{
/*尝试打开数据库*/
m_pDB->Open((char *)FileName);
}
catch(CDaoException* e){
DisplayDaoException(e);/*处理报错信息*/
e->Delete();
if (m_pDB->IsOpen())
m_pDB->Close();
delete m_pDB;
return -1;
}
if (m_pDB->IsOpen())
{
CDaoRecordset rs(m_pDB);
try
{
sprintf(FileName,"select * from  file  where  ny='%s' and datname='%s'",ny,datname);
rs.Open(dbOpenDynaset,FileName,dbInconsistent);
}
catch(CDaoException* e){
DisplayDaoException(e);/*处理报错信息*/
e->Delete();
if (m_pDB->IsOpen())
m_pDB->Close();
delete m_pDB;
return -1;
}
if (!rs.IsBOF() && !rs.IsEOF())
{
rs.MoveFirst();
while(!rs.IsEOF())
{
try
{
rs.Delete();
}
catch(CDaoException* e){
DisplayDaoException(e);/*处理报错信息*/
e->Delete();
   if (m_pDB->IsOpen())
   m_pDB->Close();
delete m_pDB;
return FALSE;
}
rs.MoveNext();
}
}
} if (m_pDB->IsOpen())
m_pDB->Close();
delete m_pDB;
return 0;
}

解决方案 »

  1.   

    Access里工具->实用工具->压缩和修复数据库
      

  2.   

    suisuibianbian(随随便便) 
    我的意思是用VC++实现!
      

  3.   

    删除access的时候,access并没有删除,只是做了删除标记,你自己看不见而已。
    所以比如你原来是6M的大小,删除里面2M数据以后你还是会是6M大小的除非你进行压缩修复数据,这样才会真实的删除其实和硬盘里面删除文件一个道理
    同时,自动修复功能对Access的自动编号等都有修复功能。
    很重要的功能哦:)