关于PARADOX问题,求教!!(100分)

  • 主题发起人 主题发起人 cooljing
  • 开始时间 开始时间
C

cooljing

Unregistered / Unconfirmed
GUEST, unregistred user!
我是新手,请大家多多指教!
我用PARADOX做数据库,
程序通过BDE,

做一个简单的TABLE.INSERT,
如果,程序正常退出或者按<ctrl>+<alt>+<del>关闭,
都会正常添加,
但是,在不关闭程序的情况下退出WINDOWS时,
发现数据库并没有添加!

这是怎么回事,?
 
你程序退出时,BDE自动帮你提交了。
而你直接退出WINDOWS,BDE当然来不及给你提交啦
 
这种情况我也遇到过,有一次停电了,一上午白干了!
楼上的兄弟已经说了
 
补充一句,如果是规范退出的话就可以,不然不行

比如用c+a+d结束程序就可以,直接用来退出windows就不行
 
多谢指导!
那有什么办法解决么???
否则一遇到死机或停电,就很惨了。
 
一般的说,只有当Table被关闭时修改的数据才被数据库引擎存进硬盘,系统掉电或者崩
溃都会导致数据丢失!为了避免数据丢失,可调用BDE函数(DbiUseIdleTime,DbiSaveChan
ges)强制存盘。

1.DbiSaveChanges(hDBICur):
==========================

DbiSaveChanges 保存所有的数据更新,可以随时调用。例如你可以在一个纪录更新后立
即存盘:

procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
DbiSaveChanges(Table1.handle);
end;


注:该方法并不适用于SQL数据表。


2.DbiUseIdleTime:
==========================

DbiUseIdleTime 可以在WINDOWS消息队列为空时调用,使BDE能够保存缓冲区中的数据。

换句话说,他完成DbiSaveChanges的所有功能,而且是保存所有更新过的表格。

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.onIdle := UseIdle;
end;

procedure Tform1.UseIdle(Sender: TObject; var Done: Boolean);
begin
DbiUseIdleTime;
end;
 
不好意思,继续请教你们啦!

1。我在程序中如上所示添加了,DbiSaveChanges(Table1.handle);
怎么提示:undeclared identifier!?
是否引用BDE函数,还有什么窍门呀?

2。我发现有个这样的现象:
在BDE的ALIAS配置时,如果PATH:=具体的绝对路径(如:C:/DELPHY/),
则异常退出程序时,BDE没把数据写进硬盘;
但如果PATH:=//本机名/共享文件夹(如://cool/delphy/)
则异常退出程序时,BDE也把数据写进硬盘;
这怎么解释呢???

非常感谢大家的热情帮助!
 
这个问题是这样的:
Paradox是基于文件的一种数据库,一般在插入数据时,会先写入缓冲区内,然后在退
出或关闭时再一次提交,写入硬盘中,所以在非正常关闭时尤其是突然停电时会出现丢失
数据的情况,你只要在每次insert之后都将Query关闭再打开就不会丢数据了。
暂时还没想出其他更好的办法。
 
多人接受答案了。
 
后退
顶部