隐藏行中IIF表达式上的可见行值?

问题描述 投票:0回答:1

Purchase Price Variance

在我的特定情况下(屏幕截图),报告显示先发货(步骤1),然后显示发票(步骤2)。我想将所有这些信息都放在一行中。我需要在POP_TYPE = Shipment时隐藏行,但是如何获取POP_TYPE = INVOICE行中的QTY SHIPPED和PURCHASE PRICE值?棘手的是,“购买价格值”和“发票价格值”是同一字段,正在更改POP_TYPE上的值,即“装运”或“发票”。有什么想法或声明可以解决这种情况吗?

以下是该报告的实际系统生成的代码:

select [ASIEXP28].[receiptdate] AS 'Receipt Date',
[ASIEXP28].[POPRCTNM] AS 'POP Receipt Number',
[ASIEXP28].[BACHNUMB] AS 'Batch Number',
[ASIEXP28].[PONUMBER] AS 'PO Number',
[ASIEXP28].[VNDDOCNM] AS 'Vendor Document Number',
[ASIEXP28].[VENDORID] AS 'Vendor ID',
RA.dbo.DYN_FUNC_POP_Type([ASIEXP28].POPTYPE) AS 'POP Type',
[ASIEXP28].[ITEMNMBR] AS 'Item Number',
[ASIEXP28].[ITEMDESC] AS 'Item Description',
[ASIEXP28].[UOFM] AS 'U Of M',
[ASIV0001].[QTYSHPPD] AS 'QTY Shipped',
[ASIV0001].[QTYINVCD] AS 'QTY Invoiced',
[ASIV0001].[QTYMATCH] AS 'QTY Matched',
[ASIEXP28].[LOCNCODE] AS 'Location Code',
(CASE WHEN [ASIEXP28].[UNITCOST]<0 THEN '-'+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR(abs([ASIEXP28].[UNITCOST]),100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')))) ELSE(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR([ASIEXP28].[UNITCOST],100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))))+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) <> 0  THEN (SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+RTRIM(CRNCYSYM) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) END) AS 'Unit Cost',
(CASE WHEN [ASIEXP28].[EXTDCOST]<0 THEN '-'+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR(abs([ASIEXP28].[EXTDCOST]),100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')))) ELSE(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR([ASIEXP28].[EXTDCOST],100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))))+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) <> 0  THEN (SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+RTRIM(CRNCYSYM) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) END) AS 'Extended Cost',
[ASIEXP28].[USER2ENT] AS 'User To Enter',
[ASIEXP28].PSTGSTUS AS 'Posting Status',
[ASIEXP28].[PTDUSRID] AS 'Posted User ID' from RA..[ASIEXP28]
left join RA..[ASIV0001] on [ASIEXP28].[POPRCTNM] = [ASIV0001].[POPRCTNM] and 
[ASIEXP28].[RCPTLNNM]=[ASIV0001].[RCPTLNNM]
WHERE ([ASIEXP28].[receiptdate] BETWEEN @DFrom AND @DTo) ORDER BY [ASIEXP28].[PONUMBER]
sql hidden-field iif ssrs-expression
1个回答
0
投票

考虑您的问题,您需要完成两件事,为POP_TYPE = INVOICE隐藏行,并从相同的采购订单号显示发货数量和购买价格,但具有POP_TYPE = INVOICE。

注意:当我给出您的想法时,可能会出现拼写错误或语法错误或字段名称更改,并且在本地我使用了不同的字段名称进行测试

隐藏行在SSRS中非常简单。

除非我缺少一些细微差别,否则您将仅基于该值设置行可见性。

右键单击详细信息行,然后选择行可见性...

enter image description here

在弹出的窗口中,选择基于表达式显示或隐藏

enter image description here

在该表达式内,您将使用类似逻辑

=Fields!POP_TYPE=INVOICE

现在是棘手的部分,您需要具有相同po号但pop_type = invoice的值。

这里您应该使用Lookup function

转到您要发送数量的单元格,然后右键单击并选择表达式

查阅(源表达式,目标表达式,结果表达式,数据集)

因此您的情况应该是

=Lookup(Fields!PONumber.Value & "Shipment", Fields!PONumber.Value & Fields!POPType.Value, Fields!qtyshipped.Value, "DataSet1") 

与列/单元格的购买价格相同

=Lookup(Fields!PONumber.Value & "ship",Fields!PONumber.Value & Fields!POPType.Value,Fields!PurchasePrice.Value,"DataSet1")

我在本地尝试过,下面是我得到的结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.