我在DataModule中设定了针对表A的计算字段
CalA1、CalA2、CalA3其中CalA1由A表中字段“1”“2”“3”计算得出,
CalA2和CalA3分别为CalA1与A表中另外的字段“4”“5”计算得出,作为结果我需要A表存储这三个计算字段的值,分别存在字段“6”“7”“8”在数据录入界面里,要求输入“1”“2”“3”“4”“5”的值后在“6”“7”“8”中自动出现计算结果,
我分别试用了一下语句
dbedit4.text:='CalA1';
dbedit14.text:=datamodule2.A.fieldbyname('CalA1').asstring;没有反应,写入后库中字段为空,录入时屏幕相应也没有数据计算出来哪位大大能帮忙看看?指点一二
万分感谢
 

解决方案 »

  1.   

    终于看明白了,最关键的地方是:
    在数据录入界面里,要求输入“1”“2”“3”“4”“5”的值后在“6”“7”“8”中自动出现计算结果,
    那你这样求:
    当输入1、2、3、4、5回车后计算
    6:=CalA1:=计算(1、2、3)
    7:=CalA2:=计算(6、4)
    8:=CalA3:=计算(6、5)
    然后存入A表中即可
      

  2.   

    谢谢楼上,这个逻辑我知道的,我想知道代码如何写?
    之前我写在DataModule form里,用:
    procedure TDataModule2.midCalcFields1(DataSet: TDataSet);
    begin
     dataset['6']:=dataset['1']+dataset['2)']+dataset['3']; //合计
    end;
    procedure TDataModule2.midCalcFields2(DataSet: TDataSet);
    begin
     dataset['7']:=dataset['6']*dataset['4’]; 
    end;
    procedure TDataModule2.midCalcFields(DataSet: TDataSet);
    begin
     dataset['8']:=dataset['6']+dataset['5']; 
    end;编译通过了,但是在程序中没有反应。
    有新招吗?请指教!!
      

  3.   

    不能写在这里面  TDataModule2.midCalcFields1(DataSet: TDataSet);
    可以考虑写在afteropen 中
      

  4.   

    To:xiaxianshuang(夏娴霜) 你说的不能写在TDataModule2.midCalcFields1(DataSet: TDataSet);里,是指我放的位置不对,没有得到触发吗?我看到例子程序中有类似的用法,其中MID是TABLE,我的程序中MID是QUERY。