首 页 开发联盟 开发培训 下载中心 相关教程 点击排行 留言 开发手册
 
用户名:     密 码:     验证码:   
 
宏达软件开发网 > 文章中心 > 系统资料 >
利用脚本功能计算折扣率←脚本,折扣率

利用脚本功能计算折扣率
发布时间: 2010/3/11 13:42:00
折扣率=实收金额/应收金额
将主表的 “实收金额”/ “应收金额”的值自动填写到从表的“折扣率”字段中;
典型的主表值更改从表值,而且更改从表当前的多行记录。
具体实现:
脚本如下:
<script>
var
m:double;
begin
if (DataMdl_Tabledoc.fieldbyname('应收金额').isnull) or (DataMdl_Tabledoc.fieldbyname('应收金额').value=0) then exit;
m:=DataMdl_Tabledoc.fieldbyname('实收金额').value/DataMdl_Tabledoc.fieldbyname('应收金额').value;
DataMdl_DetailTableTADODataSet0.close;
DataMdl_ADOQueryTemp.Sql_text:='UPDATE 销售明细 SET 折扣率=' + floattostr(m) + ' WHERE 销售单号="' + DataMdl_Tabledoc.fieldbyname('销售单号').asstring +'"';
DataMdl_ADOQueryTemp.ExecSQL;
DataMdl_ADOQueryTemp.Sql_text:='SELECT * FROM  销售明细';
DataMdl_ADOQueryTemp.OPEN;
DataMdl_ADOQueryTemp.CLOSE;
DataMdl_DetailTableTADODataSet0.OPEN;
end.
</script>
脚本解析:
一、脚本可以在使用SQL的地方出现
二、脚本必须使用<script>....</script>包围起来
三、脚本使用pascal语言
具体语句解释:
<script> 
var //定义变量开始标示
m:double; //定义变量M
begin  //执行代码开始
if (DataMdl_Tabledoc.fieldbyname('应收金额').isnull) or (DataMdl_Tabledoc.fieldbyname('应收金额').value=0) then exit;
//DataMdl_Tabledoc是主表对应的内部数据对象
//DataMdl_Tabledoc.fieldbyname('应收金额').isnull  是应收金额为空
//DataMdl_Tabledoc.fieldbyname('应收金额').value=0  是应收金额为0
If()or()then exit;   当应收金额为空或0时,退出
m:=DataMdl_Tabledoc.fieldbyname('实收金额').value/DataMdl_Tabledoc.fieldbyname('应收金额').value;
//变量赋值要用:=
//DataMdl_Tabledoc是主表对应的内部数据对象
//DataMdl_Tabledoc.fieldbyname('实收金额').value是获得实收金额的值
DataMdl_DetailTableTADODataSet0.close;
//DataMdl_DetailTableTADODataSet0是第一个从表的内部对象,这个语句关闭从表,避免下面执行处理时冲突
DataMdl_ADOQueryTemp.Sql_text:='UPDATE 销售明细 SET 折扣率=' + floattostr(m) + ' WHERE 销售单号="' + DataMdl_Tabledoc.fieldbyname('销售单号').asstring +'"';
//DataMdl_ADOQueryTemp是SQL语句命令执行对象,这个语句制定执行的SQL语句
DataMdl_ADOQueryTemp.ExecSQL;
//执行指定的语句
DataMdl_ADOQueryTemp.Sql_text:='SELECT * FROM  销售明细';
DataMdl_ADOQueryTemp.OPEN;
DataMdl_ADOQueryTemp.CLOSE;
//其实这三行可以不用,这次用来缓冲,确保修改数据已经存到硬盘上
DataMdl_DetailTableTADODataSet0.OPEN;
//重新打开从表
end.//执行代码结束
</script>
 
说明:上面的DataMdl_Tabledoc、DataMdl_DetailTableTADODataSet0、DataMdl_ADOQueryTemp都可以在编写代码时通过ctrl+O获得
代码编辑器会列出当前可用的对象
27993808
上一篇:通过身份证计算出生年月及年龄下一篇:关于SQL计算触发执行点的相关解释
关于我们 | 联系方式 | 合作方式 | 相关条款 | 常见问题
公司地址:山东省聊城市振兴路西路18号楼     邮政编码:252000    客服电话:0635-8386265
版权所有:HONGDA SOFTWARE    宏达软件     鲁ICP备09000001号