如何实时的把缓存内的数据写入物理文件?flushbuffers不好使呀!(300分)

  • 主题发起人 主题发起人 wdl
  • 开始时间 开始时间
W

wdl

Unregistered / Unconfirmed
GUEST, unregistred user!
我用flushbuffers之后除了在应用程序的目录下产生了一堆形如:_qsq1.db的东西之外
并没有真正把记录写入物理文件,我不知道怎么办了,各位救我
如果不解决的话,万一断电或者死机,一天连续运行的数据可能都丢失了
怎么办?
应该很简单吧?可是我不会,也找不到 :(
 
flushbuffers这种东西都是扯淡,买个 ups不都解决了,faint
 
给个人作的小东东,让人家买ups???恐怕不行的
没有软件解决办法吗?应该会的人很多吧,我现在是不会 :(
 
感觉flushbuffers应该可以了,
你可以在你的table/query的afterpost事件里写flushbuffers,
这样更保险一些。
 
好象真的不行?
是我自己有错吗?
各位还有什么高招吗?
 
试试用
uses
BDE;

procedure TDataModule1.Table1AfterPost(DataSet: TDataSet);
begin
BDISaveChanges(Table1.Handle);
end;
 
楼上说的可行,强行写入。
 
wdl:继续这个帖子不好么?开那个一个空帖子有什么意义??
 
各位抱歉了呀,刚从北京回来,参加招聘会去了,结果嘛。。。等。。。 :) ,要等呀

to wjiachun:
因为我觉得这个问题应该好解决的,可是这么长时间也没有解决,我也很苦恼,哎~~
自己学的不透呀:( 所以我就着急的想让更多的人知道,于是就发了空的,以后我不这么干
了,这次抱歉了

to everyone:
以上各位富翁的办法都不成呀,pjzdz的办法编译过不去,单元我也加了的,连那个bde
都不认,不知道怎么回事 :(
还有高手能告诉我如何解决这个问题吗?单机班的小问题,难道这么让人为难吗?
(嘿嘿,我就被难住了)
 
>>BDISaveChanges
应该是DBISaveChanges

即使这样,与flushbuffers并无区别。
也就是说,如果flushbuffers不能做到彻底写入,也就没别的办法了。

不过,可以试试自己建立session,然后给用户一个选项--保存,
此时关闭session,再打开之类的...谁知道呢?
 
使用bde.DbiSaveChanges(table1.Handle)应该行,DELPHI帮助里面是这样写的
不认BDE单元可以复制一个BDE.DCU到LIB目录下就行,我已经编译通了
 
用POST函数试一试。
 
关注,我也遇到这类问题。 虽然已POST , 在DBGRID中也已看到新加的记录 ,
但在物理文件中并没有真正添加 , 一死机.....

 
解决了
原来我的代码里用sql的update竟然没有引发post事件 :(
这样的苯事希望大家不要发生了
各位说的两种方法都对 谢谢!!!
 
我倒,我倒,我倒倒倒...
 
to 温柔一刀:
别倒呀,是我没有说清楚。具体原因是那段代码不是我写的,原来的写法没有返回游标的
而且没有调用post所以出了那个问题。嘿嘿,其实也是自己不行呀,后来才意识到没有出发post事件
:(
喂!现在不是还在倒着那吧?要不我去扶你呀。。。
 
后退
顶部