天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
楼主: wangdan

求助两个问题一个关于视图跳转一个关于金额控制

[复制链接]
 楼主| wangdan 发表于 2012-2-22 16:32:54 | 显示全部楼层
本帖最后由 wangdan 于 2012-2-22 16:38 编辑

有个表单,里面有金额,总金额,项目名称等基本字段,每次建立一条记录时输入金额,总金额是特定不变的,在保存时要判断以前建立的项目名称相同的所有条目的金额加上本次要保存的金额,不超过总金额,这是我要实现的功能
 楼主| wangdan 发表于 2012-2-22 16:35:52 | 显示全部楼层
上面是程序,在测试时发现当修改一条已经存在的记录的金额时有bug,也你是我现在要咨询的,在修改已经存在的记录时能排除旧值的影响
 楼主| wangdan 发表于 2012-2-22 16:36:30 | 显示全部楼层
上面是程序,在测试时发现当修改一条已经存在的记录的金额时有bug,也你是我现在要咨询的,在修改已经存在的记录时能排除旧值的影响
 楼主| wangdan 发表于 2012-2-22 16:47:41 | 显示全部楼层

标题

把我要实现的功能都说了一下,请回复…
suyisene 发表于 2012-2-22 17:00:59 | 显示全部楼层
您好,按照你说的业务需求,就是说实现累加金额不超过指定的总金额。而你每次添加一次金额进去的时候,都会新增一条记录。那么这样子的话,你就想将这些记录累加,得到的数目不超过指定的金额总数。按照刚才上面写得脚本来看,这样写没错的啊,关键是你要安排好执行顺序,你将那个sql语句的sum去掉,然后你从后台数据库查询出来,那么得到是一个结果集,结果集里面的每一条记录都是一个数,在你迭代循环的时候不就可以将这些累加起来的嘛。我想不明白你为什么还要sum这个函数。
 楼主| wangdan 发表于 2012-2-22 17:37:41 | 显示全部楼层
本帖最后由 wangdan 于 2012-2-22 17:39 编辑

这是我的程序,请指教修正,其实我对for (var iter = datas.iterator();iter.hasNext();)
{
  var data = iter.next();
  value = data.getItemValueAsDouble("zonger");
}不理解,也就导致我不太会自己写for语句,请指教,

原程序如下:

var xm=getItemValueAsString("项目名称");
xm;
var sql="select sum(item_金额) as item_zonger ,domainid from tlk_试验总额控制及统计信息 where item_项目名称='"+xm+"'";
var datas = queryBySQL(sql);
var value=0;
for (var iter = datas.iterator();iter.hasNext();)
{
  var data = iter.next();
  value = data.getItemValueAsDouble("zonger");
}
value;
var aa=getItemValueAsDouble("金额");
var bb=getItemValueAsDouble("总金额");
var sumValue=value+aa;
if (sumValue>= bb && sumValue!=null)
createAlert(sumValue+"sumValue 超!!")
suyisene 发表于 2012-2-22 18:02:18 | 显示全部楼层
您好,帮你修改一下:
var xm=getItemValueAsString("项目名称");
var sql="select  item_zonger ,domainid from tlk_试验总额控制及统计信息 where item_项目名称='"+xm+"'";//item_zonger你的那些填入金额的字段,不要用sum这个函数了。
var datas = queryBySQL(sql);
var value=0;//这个是全局变量
for (var iter = datas.iterator();iter.hasNext();)//这个是循环迭代,将你以前保存的那些记录全部查询出来成一个数据集,然后再迭代一条条找出来
{
  var data = iter.next();
  value = value+data.getItemValueAsDouble("zonger");
}
var aa=getItemValueAsDouble("金额");
var bb=getItemValueAsDouble("总金额");
var sumValue=value+aa;
if (sumValue>= bb && sumValue!=null)
createAlert(sumValue+"sumValue 超!!")


这样就可以了,你再试试看,我们有问题再沟通。。。
 楼主| wangdan 发表于 2012-2-22 20:20:08 | 显示全部楼层
本帖最后由 wangdan 于 2012-2-22 21:13 编辑

专家啊,无语了啊,麻烦您仔细看一下程序呗,我的原句是
    var sql="select sum(item_金额) as item_zonger ,domainid from tlk_试验总额控制及统计信息 where item_项目名称='"+xm+"'";
里面的item_zonger 明显不是字段啊,你咋改的时候给当成字段了呢,金额才是字段啊,
要不您实验一下再给我回复,

就算是将您的 item_zonger  换成 item_金额 运行也不对啊,老大,拜托了啊,
我的实验模型如下,
做了两个表单,一个为 试验总额控制及统计信息 里面有字段金额,总金额 ,项目名称,三个字段。然后生成其视图并创建视图的菜单
              一个为 项目信息    里面有字段 项目名称_1 ,项目金额。。然后生成其视图并创建视图的菜单。
             然后在  表单《试验总额控制及统计信息》里插入视图,使得 总金额与项目金额映射起来,项目名称与项目名称_1 映射起来,
        
             在表单《 试验总额控制及统计信息 》的操作 保存并返回 这个操作的执行前代码中写入上述代码,老大,我的模型已经详细说明了,麻烦专家实验一下好不,或者跟其他专家交流一下好不,
suyisene 发表于 2012-2-23 09:13:26 | 显示全部楼层
本帖最后由 suyisene 于 2012-2-23 09:15 编辑

您好,你理不理解SQL语句么?就是
将var sql="select sum(item_金额) as item_zonger ,domainid from tlk_试验总额控制及统计信息 where item_项目名称='"+xm+"'";
改成var sql="select item_金额 ,domainid from tlk_试验总额控制及统计信息 where item_项目名称='"+xm+"'";
我所说的那个例子是将你原来的那些字段查询出来,然后全部加起来。而关于什么字段,你自己修改,好么?不就是根据你的字段修改一下sql语句不就行啦。我给你的那些例子没有错啊。迭代相加,得到全部记录的值再加上新增的值。
如果你还说不理解,我真的不知道怎么说了。
 楼主| wangdan 发表于 2012-2-23 22:16:53 | 显示全部楼层
本帖最后由 wangdan 于 2012-2-23 22:18 编辑

回复 59# suyisene

下面程序的if语句好像没起作用,请帮忙看一下,
    var xm=getItemValueAsString("年度计划");
xm;
var  ydjh=getItemValueAsString("月度计划");
ydjh;
var sql="select item_月度计划金额 as item_zonger , item_月度计划 as item_yjh ,domainid from tlk_实验总额控制 where item_年度计划='"+xm+"'";
var datas = queryBySQL(sql);
var value=0;
for (var iter = datas.iterator();iter.hasNext();)
{
  var data = iter.next();
if (data.getItemValueAsString("yjh")!=ydjh)
  {value = value +data.getItemValueAsDouble("zonger");}       
        }
value;
var aa=getItemValueAsDouble("月度计划金额");
var bb=getItemValueAsDouble("年度计划金额");
var sumValue=value+aa;
if (sumValue>= bb && sumValue!=null)
createAlert(sumValue+"sumValue 超!!");

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 16:41

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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