100分求救……(100分)

  • 主题发起人 主题发起人 seucag
  • 开始时间 开始时间
S

seucag

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在使用DELPHI开发一小型MIS系统时遇到一下现象:
(PARADOX7表,TABLE控件)
在对表进行APPEND操作以后,调用了POST方法
当程序窗口没有关闭的时候
此时可以看到记录增加到表中
可是当窗体关闭以后
再次打开程序时,新插入的记录竟然没有了

如果窗口没有关闭时,调用另外一个程序浏览此表
不关闭此浏览程序的情况下
关闭上面提到的窗口, (此时可以关闭浏览程序)
这种情况下再打开程序时可以看到新增加的记录

实在搞不懂这是怎么回事了
大家有没有遇到这样的情况??

暂时先送100分啦~
3X!!!!!!!!!!!

 
怎么没有人回答啊?~
 
贴点代码出来?
 
在执行一次table.close试试。
 
关闭索引,调用select * from 看看
 
to zhuzhaog
请问怎么关闭索引啊~
to QiuXiaoFeng
我就是在关闭窗体的时候调用了CLOSE方法
不关闭窗体还是有的

to RedBeret
我是先调用APPEND
再利用TABLE1。FIELDBYNAME('字段').value:=
赋值完成以后
调用POST方法
此时数据库中可以看到新加的记录
但关闭程序以后就没有了

不知道怎么回事

但如果打开另外一个程序的情况下
运行上面说的程序,就不会出现记录丢失的情况
怎么回事呢?
 
程序关闭只前,你要Table1.Post,
然后再Close,这样才会真正存储。
 
我是在按扭的事件中调用的POST方法
窗体关闭的时候调用CLOSE方法
就是关闭以后数据不见了

table1.append;
...........
table1.FieldByName('userno').asstring:=DBEdit2.text;

table1.FieldByName('buydate').value:=date;
table1.FieldByName('changedate').value:=date;
table1.FieldByName('buynum').value:=1;
table1.FieldByName('buysumkw').value:=strtoint(buyDBEdit.Text);
table1.FieldByName('sumkw').value:=0;
table1.FieldByName('lastprice').value:=table1.FieldByName('currentprice').value;
table1.FieldByName('ename').value:=ename(usernamedbedit.text);
table1.FieldByName('encrypt').value:=seccode;
table1.FieldByName('cutmark').value:=warnDBCheckBox.Checked;
table1.FieldByName('Stealmark').value:=stealDBCheckBox.Checked;
table1.FieldByName('Overmark').value:=false;
table1.FieldByName('Stealnum').value:=0;
table1.FieldByName('staname').value:=DBEdit1.text;
table1.FieldByName('stano').value:=DBEdit4.Text;

table1.Post;
 
你的table是不是这样设置的?
table.cachedupdates:=true;
改为false就行了,如果不改必须执行一遍table.applyupdate
 
table.cachedupdates属性值是FALSE
看过一些以前的帖子
可能问题出在索引上
我原来建一次索引(以前没有这个问题)
后来出了点问题
我把目录中除了DB文件以外的数据库文件删除了
后来就出现这样的情况
 
hehe,你把索引又删掉了
 
90%以上的原因是出在索引上的
我对这个不是很了解~

我调用FlushBuffers以后
现在出现
INDEX OUT OF DATE 错误
怎么解决这个问题??
3X
 
把你的库重建然后再试试
 

暂时只能这个方法了

40几个字段啊~

另外
我现在觉得用Database Desktop建的数据库狂不稳定
 
我建议你用SQL用TQuery,Table太次了,早就没人用了[:)]
 
用TQuery还不是差不多的吗?
 
用Append时,必须访问CanModify特性;
如果表里已有一条纪录和你录入的纪录在索引字段相同时;
它会报错,或者你用AppendRecord([])试一下。
 
CanModify属性在设计阶段即为TRUE
程序运行时会改变吗?

还有我发现DB类型的数据库不管你新增加多少条记录
程序不关闭,似乎都没有真正的写到磁盘文件中去
怎么样让每新加一个记录都强制存盘~

有人知道吗~?
 
用SAFETABL.ZIP
一个改良型的 TTable 构件。针对 Local Database 可以在 Table 每次 Post 或 Delete 时, 自动将更改结果写入磁碟。避免因停电或当机,造成数据库内容遗失 ( 附源码 )。作者:陈永昌。
http://www.starinfo.net.cn/computer/control/download14.htm
 
多人接受答案了。
 
后退
顶部