各位老大:我在线等了三天都没解决这个问题,我不相信我找不到结果,所以再来100分请教!请问,怎么在对Visual FoxPro的".dbf"数据库中,对加了删除标志的记录进行彻底删除?我查了CRecordset好象没有Pack成员函数啊!
代码:SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Visual FoxPro Driver","DSN=data\0Description=data\0SourceType=dbf\0Source=e:\\conv\0");m_database.Open(_T("data"));data.m_pDatabase=&m_database;data.Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM pdaa1" ,CRecordset::none);删除记录的时候我用:m_database.ExecuteSQL(_T("delete from pdaa1")); 而这只是加上删除标记m_Database.ExecuteSQL(_T("pack"));
可是这时运行就提示:“File must be opened exclusively”而没有彻底删除。前面一个帖也有100分,还没结,我可以一起给分~!
代码:SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Visual FoxPro Driver","DSN=data\0Description=data\0SourceType=dbf\0Source=e:\\conv\0");m_database.Open(_T("data"));data.m_pDatabase=&m_database;data.Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM pdaa1" ,CRecordset::none);删除记录的时候我用:m_database.ExecuteSQL(_T("delete from pdaa1")); 而这只是加上删除标记m_Database.ExecuteSQL(_T("pack"));
可是这时运行就提示:“File must be opened exclusively”而没有彻底删除。前面一个帖也有100分,还没结,我可以一起给分~!
解决方案 »
- MFC "IN STATIC LIBRARY"和"IN SHARECD DLL"的区别
- 在VS2005里如何配置DX9.0??
- RTSP 代理服务器的 传输率 问题, using Darwin Streaming Server
- 求教:在单文档程序中,在客户区建立一个CBitmapButton, 弹起,按下,焦点的状态用不同的位图显示?
- 逐点描绘太慢的问题
- ADO _RecordsetPrt 添加记录问题
- 请教ODBC和ADO的问题
- 用QuartzCore,在layer上用CGContextDrawImage描画图像,放大时出现黑条
- 编译时找不到头文件
- 定义静态成员不成功
- 请大家 推荐一些比较难的书(散分)
- vs.net是不是有bug
“File must be opened exclusively”,到底是运行到哪一句(具体的一句),报的错,你始终没有回答。
m_database.ExecuteSQL(_T("pack"));后,跳到以下:
CATCH_ALL(e)
{
lResult = AfxGetThread()->ProcessWndProcException(e, &pThreadState->m_lastSentMsg); //就到了这里,出现那个提示的 TRACE1("Warning: Uncaught exception in WindowProc (returning %ld).\n",
lResult);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
即:data.Open(......)后有没有调用data.Close();?
m_database.OpenEx("DSN=data", CDatabase::openExclusive);
data.m_pDatabase=&m_database;
//data.Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM pdaa1" ,CRecordset::none);
m_database.ExecuteSQL(_T("pack"));
就这么多了。可是,运行到m_database.OpenEx("DSN=data", CDatabase::openExclusive);时就会报错:“0x6bc85280"引用的"0x000000008"内存,该内存不能为"read"
如果我用m_database.Open(_T("data"));而不是OpenEx()的时候,再加上后面的SELECT *时,就可以继续运行了
RELEASE则报:“File must be opened exclusively”
m_database.ExecuteSQL(_T("pack"));都没问题,然后跳转到:CATCH_ALL(e)
{
lResult = AfxGetThread()->ProcessWndProcException(e, &pThreadState->m_lastSentMsg);//运行到这里时显示::“File must be opened exclusively” TRACE1("Warning: Uncaught exception in WindowProc (returning %ld).\n",lResult);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL后面都还好
你得好好学学debug。