我用ODBC(CDatabase、CRecordset)操作DBF文件时,只能在逻辑上删除表中记录:
CDatabase *pDB;
pDB->ExecuteSQL("delete from *.dbf where ....);
或:
CRecordset rs(pDB);
rs.Delete();请问如何才能物理删除之?在VFP中通过窗口命令Pack可以将其删除,但是在使用CDatabase/CRecordset时如何灵活应用它?
我尝试pDB->ExecuteSQL("pack table");系统则提示:必须以独占方式打开。
在VFP中通过窗口命令set exclusive on或者use mytable excl能使现独占方式,但是通过ODBC如何使用它?
CDatabase *pDB;
pDB->ExecuteSQL("delete from *.dbf where ....);
或:
CRecordset rs(pDB);
rs.Delete();请问如何才能物理删除之?在VFP中通过窗口命令Pack可以将其删除,但是在使用CDatabase/CRecordset时如何灵活应用它?
我尝试pDB->ExecuteSQL("pack table");系统则提示:必须以独占方式打开。
在VFP中通过窗口命令set exclusive on或者use mytable excl能使现独占方式,但是通过ODBC如何使用它?
试试用pDB->ExecuteSQL("set exclusive on");
或者改用ado
首先,在打开数据源时,
pDB->Open(...);
pDB->ExecuteSQL("set exclusive on");然后,在任何删除记录的地方:
pDB->ExecuteSQL("delete from mytable where ...");
pDB->ExecuteSQL("pack table");
即可。