这个语言名为 Microsoft Dynamics Ax x++语言,这个语言不是很熟悉,希望得到帮助,有实力的直接sx可远程
为什么代码计算出来的值跟sqll 查询出来的不对
sql sum求和出来的值是 2625 代码计算出来的翻倍了,while循环连续进去了8次进行sum
select SUM( ReqTransCov.QTY) as ' QTY' from ReqTransCov
join ReqTrans on ReqTrans.RECID=ReqTransCoV.RECEIPTRECID
Join ReqPo on ReqTrans.Refid = ReqPo.RefId AND ReqTrans.REFTYPE=ReqPo.REFTYPE and ReqTrans.planVersion = ReqPo.planVersion
join reqPlanVersion on ReqTransCov.PlanVersion=reqPlanVersion.RecId
WHERE ReqTransCov.RECEIPTRECID IN ('68721755025','68721755026',' 68721755027','68721755028')
AND ReqPo.REFTYPE= reqTrans.REFTYPE and ReqTrans .ActionType != 9
group by ReqTransCov.RECID
部分代码如下
while (queryRunReqPo.next())
{
gInventTable = queryRunReqPo.get(tableNum(InventTable));
//gReqPo = queryRunReqPo.get(tableNum(ReqPo));
//gReqTrans = queryRunReqPo.get(tableNum(ReqTrans));
while select gReqPo where gReqPo.ItemId == gInventTable.ItemId && gReqPo.RefType == ReqRefType::ItemPlannedOrder
&& (gReqPo.ReqDateDlv >= monthStartDate && gReqPo.ReqDateDlv<=monthEndDate)
join gReqTrans where gReqTrans.RefId == gReqPo.RefId && gReqTrans.RefType == gReqPo.RefType
&& gReqTrans.PlanVersion == gReqPo.PlanVersion && gReqTrans.ActionType != ActionType::Cancel
join reqPlanVersion where gReqPo.PlanVersion==reqPlanVersion.RecId
join reqPlan where reqPlan.ReqPlanId==reqPlanVersion.ReqPlanId
join reqPlanSched where reqPlanSched.ReqPlanIdSched==reqPlan.ReqPlanId && reqPlanSched.MRP == NoYes::Yes
{
gReportTableTmp.clear();
gReportTableTmp.PrimaryVendorId = gInventTable.PrimaryVendorId;
gReportTableTmp.ItemId = gInventTable.ItemId;
gReportTableTmp.NameAlias = gInventTable.NameAlias;
gReportTableTmp.ItemContainerQty = TG_InventProjectedReport_Tmp::getQtyPerContainer(gInventTable.ItemId);
gReportTableTmp.DateDay = gReqPo.ReqDateDlv;//日期
if(reqPlanSched.MRP == NoYes::Yes)
{
select sum(QTY) from curReqTransCov
group by curReqTransCov.RECID
where (curReqTransCov.RECEIPTRECID == any2Int64('68721755025')
|| curReqTransCov.RECEIPTRECID == any2Int64('68721755026')
|| curReqTransCov.RECEIPTRECID == any2Int64('68721755027'
|| curReqTransCov.RECEIPTRECID == any2Int64('68721755028')
join curReqTrans
where curReqTrans.RECID == curReqTransCov.RECEIPTRECID
&& curReqTrans.ActionType != 9
join curReqPo
where curReqTrans.Refid == curReqPo.RefId &&
curReqTrans.REFTYPE == curReqPo.REFTYPE &&
curReqTrans.planVersion == curReqPo.planVersion
&& curReqPo.REFTYPE == 33
join curReqPlanVersion
where curReqTransCov.PlanVersion == curReqPlanVersion.RecId ;
gReportTableTmp.Qty = curReqTransCov.Qty;
}
else
{
gReportTableTmp.Qty = gReqTrans.Qty;//SUM
}
gReportTableTmp.Qty = gReqTrans.Qty;//SUM
}
sql查询结果截图
得到报表值 这个QTY就是对应的值 红框中第一个格子就是日期为1号的值以此类推,我现在查询出来的是整个月的,需要把这一个月的值匹配到报表中,我得到正确的sql查询结果是2635,这2625就应合理分配到日期1号和8号的格子中。