我知道要往数据库表中插入记录,必须首先让表处于Insert状态,填好数据后post。但是我现在遇到这样一个问题:
有两个窗口和一个DataModule,在DataModule上放置了TDatabase1、TTable1和TDataSource1,窗口1上放置了n个DBEdit,分别与数据表中各字段相连。点击窗口1上的新建(table.insert)按钮,DBEdit变成空白,填写完成后,点击保存按钮(table.post)。
弹出窗口2(放置了DBGrid1)后,我该新建的用户信息竟然有两行显示,重新启动程序(不是重新弹出窗口2)后会只有一行显示。
有两个窗口和一个DataModule,在DataModule上放置了TDatabase1、TTable1和TDataSource1,窗口1上放置了n个DBEdit,分别与数据表中各字段相连。点击窗口1上的新建(table.insert)按钮,DBEdit变成空白,填写完成后,点击保存按钮(table.post)。
弹出窗口2(放置了DBGrid1)后,我该新建的用户信息竟然有两行显示,重新启动程序(不是重新弹出窗口2)后会只有一行显示。
database.starttransaction;
try
table.post;
database.commit;
except
database.rollback;
end;
当我在Form1窗口中填好数据(使用的是DBEdit组件)后,点击[保存]键(只有Table1.post一行代码),然后点击[新建]按钮(只有Table1.insert一行),继续填写用户数据->保存,如此相继填入多个用户,然后退出Form1。
在主窗口上点击“显示用户”菜单后弹出Form2,在DBGrid显示就总是存在一点问题:
①、有时后只有第一次输入的用户信息显示完全,最后一次输入的用户信息编号(在MS SQL2000数据库中,我将它定义为自己增加)不显示,其他用户信息均不显示;
②有时所有输入的用户信息均正常显示,但是最后一次输入的用户信息有两行显示,其中一行正常,另外一行除了编号没有外,其他字段也有显示;
当我按F9重新启动程序,点击菜单弹出Form2后,在DBGrid中,所有用户信息均显示正常,请问这是为什么?
不过,我是想知道在这样的设计下,为什么会出错呢?