我知道要往数据库表中插入记录,必须首先让表处于Insert状态,填好数据后post。但是我现在遇到这样一个问题:
有两个窗口和一个DataModule,在DataModule上放置了TDatabase1、TTable1和TDataSource1,窗口1上放置了n个DBEdit,分别与数据表中各字段相连。点击窗口1上的新建(table.insert)按钮,DBEdit变成空白,填写完成后,点击保存按钮(table.post)。
弹出窗口2(放置了DBGrid1)后,我该新建的用户信息竟然有两行显示,重新启动程序(不是重新弹出窗口2)后会只有一行显示。

解决方案 »

  1.   

    Form1.保存按钮事件中
      database.starttransaction;
      try
        table.post;
        database.commit;
      except
        database.rollback;
      end;
      

  2.   

    鸭神,你说的办法还是没有解决我的问题。让我说得详细点:
        当我在Form1窗口中填好数据(使用的是DBEdit组件)后,点击[保存]键(只有Table1.post一行代码),然后点击[新建]按钮(只有Table1.insert一行),继续填写用户数据->保存,如此相继填入多个用户,然后退出Form1。
        在主窗口上点击“显示用户”菜单后弹出Form2,在DBGrid显示就总是存在一点问题:
        ①、有时后只有第一次输入的用户信息显示完全,最后一次输入的用户信息编号(在MS SQL2000数据库中,我将它定义为自己增加)不显示,其他用户信息均不显示;
        ②有时所有输入的用户信息均正常显示,但是最后一次输入的用户信息有两行显示,其中一行正常,另外一行除了编号没有外,其他字段也有显示;
        
        当我按F9重新启动程序,点击菜单弹出Form2后,在DBGrid中,所有用户信息均显示正常,请问这是为什么?
      

  3.   

    静大侠,我这么做是利用DBEdit组件优越性,我觉得这样出错的可能性更加少。谢谢指教。
    不过,我是想知道在这样的设计下,为什么会出错呢?