起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 165|回复: 12

【搞定】自动计算问题.

[复制链接]
发表于 2007-8-6 14:56:14 | 显示全部楼层 |阅读模式
问题如图

004.jpg

28.81 KB, 下载次数: 90

回复

使用道具 举报

 楼主| 发表于 2007-8-6 15:03:04 | 显示全部楼层
我用了数据集代理组件的CalcFields的方法倒是实现了。
不过得保存后才能现实出来.

有没有方法能在输入后就显示?

在帮我看看代码这么写有问题么?

procedure TMAINFORM.DataSetBroker1CalcFields(DataSet: TDataSet);
var lQuery:TQuery;
    lQuery_Str:String;
    CX_Str:String;
begin
    lQuery:= TQuery.Create(nil);
    try
        lQuery.ConnectionString :=STRCONN;
        CX_Str:=DataSetBroker1.DataSet.FieldByName ('cx').AsString ;
        lQuery_Str:='select CX,kc=(sum(drts) -sum(xsts)) from ccrbmxb where ZBGUID in (select guid from ccrbb where tbrq <= ''2007-8-6'')  and cx= '''+CX_Str+'''group by cx';
        lQuery.CommandText :=lQuery_Str;
        lQuery.open;
        DataSetBroker1.DataSet.FieldByName ('kc').AsInteger :=lQuery.Fields [1].AsInteger ;
    finally
        lQuery.Free;
    end;

end;
回复 支持 反对

使用道具 举报

发表于 2007-8-6 15:29:50 | 显示全部楼层
有没有方法能在输入后就显示:
在数据字段的Exit事件里处理 ,至于怎么取合计数,你要想想办法了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 15:57:32 | 显示全部楼层
我写在exit事件里.不过没有反应...
回复 支持 反对

使用道具 举报

发表于 2007-8-6 16:06:47 | 显示全部楼层
离开那个字段才会有反应的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 16:08:26 | 显示全部楼层
恩。是离开了啊。.
没有反应.
也没有出错提示..
回复 支持 反对

使用道具 举报

发表于 2007-8-6 16:14:36 | 显示全部楼层
贴代码,我试了,可以赋值的,连动的效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 16:16:29 | 显示全部楼层
procedure TCCRBXX.FIELD_MXSJJ_DRTSExit(Sender: TDataField);
var lQuery:TQuery;
    lQuery_Str:String;
    CX_Str:String;
begin
    lQuery:= TQuery.Create(nil);
    try
        lQuery.ConnectionString :=STRCONN;
        CX_Str:= DataSetMXSJJ.FieldByName ('cx').AsString ;
        lQuery_Str:='select CX,kc=(sum(drts) -sum(xsts)) from ccrbmxb where ZBGUID in (select guid from ccrbb where tbrq <= ''2007-8-6'')  and cx= '''+CX_Str+'''group by cx';
        lQuery.CommandText :=lQuery_Str;
        lQuery.open;
       // DataSetMXSJJ.edit;
       // DataSetMXSJJ.UpdateRecord ;
       DataSetMXSJJ.FieldByName ('KC').AsInteger :=lQuery.Fields [1].AsInteger ;

    finally
        lQuery.Free;
    end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-8-6 16:27:56 | 显示全部楼层
1楼中参与计算的哪些是物理字段,哪些非物理字段
8楼的代码,肯定要保存后,才起作用,数据在本地还没有提交到数据库上,而Query是直接跟数据库交互,所以需要保存才行。
回复 支持 反对

使用道具 举报

发表于 2007-8-6 16:31:27 | 显示全部楼层
exit赋值应该没问题,只是你lQuery.Fields [1].AsInteger 可能获得了一个0吧。。因为你没保存数据
。所以我说要想办法做合计
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 14:01 , Processed in 0.041010 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表