DBGrid控件,我想在增加一行记录时,当前两列的数字输入后,焦点移动到第三列时,第三列的数据自动改变为前两列的数字之和。。应该怎么做?谢谢。

解决方案 »

  1.   

    既然你的第三列是前两列之和,想必第三列必定不是数据库表的字段吧,那么把第三列的字段作为计算字段,增加数据集字段,选new fields...,calculated类型然后在OnCalcFields事件中写代码:ADOTable1.FieldByName(‘第3列’).value:=ADOTable1.FieldByName(‘第1列’).value+ADOTable1.FieldByName(‘第2列’).value;
      

  2.   

    谢谢renzhm(戴尔飞) 。是这样的:假如我有一个表table1(共三列,1,2,3)。这个表连到一个窗口上。用DBGrid1把这三列显示出来。当增加记录时,在用户输入前两列的数字后,焦点移动到第三列时,第三列的数据自动改变为前两列的数字之和。至于你说的"增加数据集字段,选new fields...,calculated类型"。我找不到在哪儿啊?我刚刚学delphi,见笑了。
      

  3.   

    1、“既然你的第三列是前两列之和,想必第三列必定不是数据库表的字段吧”   你的表结构不合理,只需要字段1和字段2即可,因为字段3可以通过前两个计算得出2、在table控件上点击右键-〉fields editor...->add all fields...   此时添加表的所有字段   -〉new field...就出现了我说的情况,计算字段是虚拟字段,不是实际表中的字段
      

  4.   

    renzhm(戴尔飞) :“既然你的第三列是前两列之和,想必第三列必定不是数据库表的字段吧”
    不对啊。我感觉没什么不合理的啊。因为这是合计字段啊,,是必须要有的啊。。
      

  5.   

    “然后在OnCalcFields事件中写代码:”奇怪。。我竞然找不到OnCalcFields这个事件。。是不是我太笨了啊:(
      

  6.   

    并不是说不对,而是说不合理!你的合计可以配合SQL语句实现:select field1,field2,合计=field1+field2 from table这样能减少数据库的容量,减少数据冗余!