2016-02-26 53 views
0

我正在尝试编写一个查询,该查询将在窗体上的标志被关闭时返回所有结果,并在标志打开时排除特定值。我一直在寻找,但无法找到我需要的确切语法。具有特定和通配符条件的IIF语句

当我在iif语句中有'Like'(当它评估为False)时,没有返回任何结果。当我将Like移动到iif语句的外部时,当关闭复选框时,我会得到预期的结果。如果标志打开,我无法得到任何结果。

有谁知道我需要写我的iif语句来获取所有的值,如果标志被关闭,所有的值,但如果标志被打开,“REPLN”?

*完整声明已添加。

SELECT MYTABLE.DPT_NUMBER, MYTABLE.VENDOR_ID AS [Vendor ID], MYTABLE.VENDOR_NAME AS [Vendor Name], Sum(MYTABLE.UNITS_ORDERED) AS [Units Ordered], Sum(MYTABLE.RECEIVED_QTY) AS [Units Received], IIf(Sum([MYTABLE]![RECEIVED_QTY])=0,0,([Units Received]/[Units Ordered])) AS [Received Fill Rate], Sum(MYTABLE.ASN_QTY) AS [ASN Ship QTY], Sum([MYTABLE]![ASN_QTY])-Sum([MYTABLE]![RECEIVED_QTY]) AS [Units In Transit], Sum([MYTABLE]![ASN_QTY])/Sum([MYTABLE]![UNITS_ORDERED]) AS [Fill Rate with In Transit], Sum([MYTABLE]![UNITS_ORDERED])-Sum([MYTABLE]![ASN_QTY]) AS [Units Open], MYTABLE.PO_TYPE 
FROM MYTABLE 
WHERE (((MYTABLE.PO_TYPE) Like IIf([Forms]![frmMain]![ReplnExclude]=True,([MyTable].[TYPE])<>"REPLN","*")) AND ((MYTABLE.DPT_NUMBER)=[Forms]![frmMain]![DeptNum]) AND ((MYTABLE.GROUP_ID)="RP10") AND ((MYTABLE.PO_EXP_RCT_DATE) Between [Forms]![frmMain]![StartDate] And [Forms]![frmMain]![EndDate]) AND ((MYTABLE.PO_HDR_STATUS)<>"Cancelled") AND ((MYTABLE.PO_DTL_STATUS)<>"Cancelled")) 
GROUP BY MYTABLE.DPT_NUMBER, MYTABLE.VENDOR_ID, MYTABLE.VENDOR_NAME, MYTABLE.PO_TYPE 
ORDER BY MYTABLE.VENDOR_NAME; 
+0

我看到和在该月底所以其他的标准?总之,如果你想看到这一切,删除了子句,所以WHERE应该在你的if语句或和。如果你发布了其他的sql,我们可以给你一个更好的答案。 – Sorceri

回答

1

where子句中你开始与“WHERE(((MYTABLE.PO_TYPE)像”,但给你在找什么没有标准,然后做IIF语句把另一条款中,我去掉( ((MYTABLE.PO_TYPE)如下面的语句

这里我们把AND放在语句中,因为我们只需要AND,如果它是真的,否则我们只需要一个空格来移动到下一个子句。

IIF([表格]![frmMain]![ReplnExclude] =真,([MyTable的]。[类型])<> “REPLN AND”, “”))

如此充满

SELECT MYTABLE.DPT_NUMBER, MYTABLE.VENDOR_ID AS [Vendor ID], MYTABLE.VENDOR_NAME AS [Vendor Name], Sum(MYTABLE.UNITS_ORDERED) AS [Units Ordered], Sum(MYTABLE.RECEIVED_QTY) AS [Units Received], IIf(Sum([MYTABLE]![RECEIVED_QTY])=0,0,([Units Received]/[Units Ordered])) AS [Received Fill Rate], Sum(MYTABLE.ASN_QTY) AS [ASN Ship QTY], Sum([MYTABLE]![ASN_QTY])-Sum([MYTABLE]![RECEIVED_QTY]) AS [Units In Transit], Sum([MYTABLE]![ASN_QTY])/Sum([MYTABLE]![UNITS_ORDERED]) AS [Fill Rate with In Transit], Sum([MYTABLE]![UNITS_ORDERED])-Sum([MYTABLE]![ASN_QTY]) AS [Units Open], MYTABLE.PO_TYPE 
FROM MYTABLE 

WHERE IIf([Forms]![frmMain]![ReplnExclude]=True,([MyTable].[TYPE])<>"REPLN AND","")) ((MYTABLE.DPT_NUMBER)=[Forms]![frmMain]![DeptNum]) AND ((MYTABLE.GROUP_ID)="RP10") AND ((MYTABLE.PO_EXP_RCT_DATE) Between [Forms]![frmMain]![StartDate] And [Forms]![frmMain]![EndDate]) AND ((MYTABLE.PO_HDR_STATUS)<>"Cancelled") AND ((MYTABLE.PO_DTL_STATUS)<>"Cancelled")) 
GROUP BY MYTABLE.DPT_NUMBER, MYTABLE.VENDOR_ID, MYTABLE.VENDOR_NAME, MYTABLE.PO_TYPE 
ORDER BY MYTABLE.VENDOR_NAME