2016-02-26 50 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