delphi+paradox表工作时,一旦出现突然停电...(150分)

  • 主题发起人 主题发起人 云飞
  • 开始时间 开始时间

云飞

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi+paradox表工作时,一旦出现突然停电或无意按下复位键,则刚才增加的记录全部丢失。(正常关闭程序则不存一切正常)我查看delphi中关于post的帮助,它说post就是将记录实际写入磁盘的操作,即然写入磁盘为什么复位重启后,表中没有刚才post进的记录呢??

我用的是delphi 3,测试很简单:在一个Form上放上dataSource1,table1,dbgird1,DBNavigatro1将table1.tablename与你的一个paradox表(*.db)相连,再设置好其它几个控件属性即可运行,此时你可以多增加一些记录,然后按下复位键。。。重启后运行刚才程序,看看刚才增加的记录是不是全没了,这太不安全了,一旦用户一天中产生了成百上千条记录,而到临下班前突停电,那不太惨了。。。

问题来了:怎样在table1.post之后,实际写入表文件中????
注:这个问题我愿出150分,不够再加,只要能解决这个问题,倾家荡产也愿意。
 
paradox这玩意最怕断电了,呵呵
 
Table1.Post之后,如果作以下操作数据就一定保存进表文件中。
Table1.Close;
Table1.Open;
但可以想像如此操作之麻烦,却是我现在找到的唯一办法。所以可以在Close之前保存
断点,Open之后在回到该记录,写一个通用过程也不是很难,所幸Paradox+BDE的速度还是可以接受的。
 
用Table1.Close;
Table1.Open;
为什么我试过之后有时可以保存修改,有时却不行?
 
是这样的。以前碰到过,是一个数据采集,每秒2次,好象是这样解决的:
用两个Session,两个Table。一个用来实时写入,另一个用来将新记录一个一个
的写入、Close、Open。这样掉电后只会丢失较少记录。
掉记录的原因可能是索引坏了。你可以测试一下。解决办法就是每次开机后,运
行一个程序,整理数据库,重建索引;如果数据库在服务器上,可以在服务器上运
行整理程序。曾这样做过,效果很好。
如果一个也不能掉,可以考虑用本地数据库文件保存,要Close、Open,然后在
BatchMove到服务器上。速度应该跟得上。
 
UPS 最管用!
 
我刚试过,用mssql7就可以避免这个问题,否则只能用UPS啦。
 
损坏的PARADOX是咬不开砸不破的核桃,砸得开恐怕也不能吃了。
 
如果运气好的话,只是丢失没存盘的那部分数据,如果运气不好的话,你看看以前有没有备份吧
 
你碰到的问题和我一样,只不过我是要求POST后数据要物理写入。因为只有物理写入
才会不丢数据或其它应用程序检测到数据的变化。
如果你有了解决方法,请告我一下好吗?
请看问题《数据库的Post指令是不是有点问题?》
 
用个时钟,每30分钟自动保存
 
我还是自已解决了吧!!@#$#$%^&*有感兴趣的朋友请和我联系。
 
多人接受答案了。
 
后退
顶部