最近一个程序需要记录一些操作记录到access数据库中,并且数据库表中的记录总数保持为100条。这就要求在保存操作记录时坚持表中的记录数,如果超过100条就将最前面的删除。
使用循环,逐条删除表中的记录,删除一条后使用MoveNext移动到下一条:
theApp.m_pRecordset->Delete(adAffectCurrent);//删除当前记录
要注意的是在打开数据库是加入这句话:
m_pConnection->CursorLocation=adUseClient;
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CS.mdb","","",adModeUnknown);
开始的时候我在数据库中手工加入了一些记录,发现可以正确删除,以为万事大吉了。可是运行了一段时间后,发现在删除一些记录时总是出错,不能正确删除当前记录。觉得代码应该没有错,于是检查了数据库,发现表中有些相邻的记录是完全一样的,就是说每个字段的值都是相同的,原因就在这边了。于是在表中新加了一个字段,类型为“自动编号”,这样可以保证每条记录都是不同的了。然后再运行,果然没问题了。
(后来想,有的人在加入多条新记录时也会经常出问题,也许原因是一样的,即加入了完全一样的记录。仅仅是猜测,没有试验过)
