前面发的几个贴都没什么人回答。现在这个问题我都快疯掉了。希望此标题让更多人注意。
作业环境:windows xp sp2+delphi 7
1.新建一个application
2.新建一个paradox的文件,字段任意
3.拖如下几个控制到Form1上
  TTable  Tablename:=刚才建立的.db文件的路径加名  如  c:\a.db     active:=true;
  Tdatasource   dataset:=table1
  DBGrid        datasource:=datasource1
4.创建完成之后,按F9   运行此程序,然后在  DBGrid里任意输入几条数据,然后打开windows的任务管理器,选择“进程”标签,找到  'delphi32.exe'   ,单击它,然后单击“结束进程”,这时delphi被关闭。就这样,再按上面的步骤1-3,,然后运行程序,刚刚输入的数据就这样没了
不管是什么样的形式对表格进行操作,如修改,添加,删除,如果程序出现异常退出,那么都会使表格数据恢复到被打开时的记录。有没有办法让对表格的操作时时更改,就算是很糟糕的办法,毕竟数据比较重要。好心人,救救我吧。这个问题真是让我哭笑不得啊。。

解决方案 »

  1.   

    你用了POST吗?
    对数据进行更新时要用POST
      

  2.   

    任何一种编程语言,在执行对文件(系统文件,数据库文件)执行插入或者修改操作时,都不可能是每次更改都马上执行磁盘I/O,对物理文件进行更新。一般的处理方式都是先写入快存,也就是缓冲区,等缓冲区数据满时才将数据真正物理地写入磁盘。
    除非,程序员强制发命令执行物理写入。譬如楼上所言的post。
      

  3.   

    本次只使用DBGrid,DBGrid对table已经有添加功能。DBGrid中怎么使用post?
      

  4.   

    DBGrid在操作时,上下移动时应该就使用了post方法吧?猜想.....
      

  5.   

    楼上说的对,是自动进行Post的
      

  6.   

    那如果自动post的话,按楼楼楼上的说法就是已经通过I/O写入物理文件了。
    那为什么还会出现这种数据丢失的情况。关键有没有什么解决的办法?
      

  7.   

    DBGrid在记录指针移动时是自动调用Post的。
      

  8.   

    但可能并没有真正执行I/O,最保险是Close一下
      

  9.   

    试过了,就算加上close,然后马上又open也是一样。大虾虾,真是让我头痛啊。救命啊…………
      

  10.   

    Close了都没有I/O?不可能吧!
      

  11.   

    怎么还用BDE+paradox啊,用ADO+ACCESS
      

  12.   

    方法就是加一個DNNAvigator 來操作