query表的数据总是丢失!(50分)

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

soit

Unregistered / Unconfirmed
GUEST, unregistred user!
我把一条或几条记录INSERT到一个QUERY表中,当时好象保存进去了
但过了几天,有的数据就丢失了,我已经为此焦头烂额了,望高手相助
 
过几天以后消失?不太可能吧。
 
把你的代码操作描述一遍吧。 用到一些什么方法控件,
CachedUpdate ? TSQLUPdate ?
事物处理?
提问时最好描述的清楚一些, 这样大家可以及时的对症下药。
猜测常常耽误事。
 
对不起,大致情况是这样的:
我编了一段程序可把COMBOX、CHECKBOX之类的控件放入DBGRID中,
然后我把一个表1,结构大概是:编号、姓名 。。。
另一个表为:编号、成绩1、成绩2。。。
我用DBNavigator翻动表1时,表2就可以把该人的成绩在DBGRID表中列出
成绩可以在DBGRID中更改
改动后当时退出,用DATABASE DESKTOP 查看表2中的记录都在
但过一两天,有少量记录就丢失了。

 
和Menxin的口气一样:
过几天以后消失?不太可能吧。
在过去的一两天中你有没有操作数据库, 如果没有操作, 一定见鬼了。
如果用你编写的程序操作了数据库, 那你的程序中一定有删除或更新的操作,
把你的程序发给我,我帮你看看。
另外, 你能告诉我, 表2的记录 总数 减少了吗? 会不会表2的编号窜到
了别的地方。
 
丢失数据的情况是必然出现,还是有时丢失,有时不丢?
你的程序执行过程中是否有非正常关机?如致命错误或重启动。(有办法)
总之,你必须找到发生的规律。
 
由于用户急等我的程序,所以我是做一点就给用户重新做安装盘,
每次都重装了BDE
装好后,刚开始使用时,这种情况较多,后来较少,但总有。
另外我说的表1表2是举个例子,程序太复杂了,没办法理出来
但无非就是
query1.Insert;
query1.FieldByName('ID').asinteger:=strtoint(dbedit1.text);
query1.Post;

query1.Edit;
query1.FieldByName('ID').asinteger:=strtoint(dbedit1.text);
query1.Post;
这样的格式吧。
用户输入后当然又进行了其他操作,回过头来才发现数据丢失了

 
补充一点:
丢失数据是不定的,我是做了一个循环批量存入数据
先做一个query从表1中查出所有要修改的人的记录
然后
query1.first;
while not query1.eofdo

begin
...{这里是修改数据的过程}
query2.locate('ID',query1.fieldbyname('id').asinteger,[]);
query2.Edit;{query2就是那个DBGRID的内容}
query2.FieldByName('ID').asinteger:=strtointdbedit1.text);
query2.Post;
query1.next;
end;
我觉得这个办法好笨,希望不要气坏了各位大侠
 
如果真如你所说,现象确实奇怪.
我建议你用 query的 sql语句
来增删改记录
 
是什么DB?试一试SQL语句,如果还出现问题,应当是数据库原因,或你程序中
其他地方删除了数据库。
 
算了,看来我最好把这个程序重写一遍,谢谢大家的帮助
 
多人接受答案了。
 
后退
顶部