Ms-access クエリでは case 式を使用できないことがわかりました。代わりに IIF() 関数を使用する必要があります。既存の古いレガシー アプリケーションのいずれかの Ms-access クエリに変換する必要がある MS SQL クエリがあります。IIF() 関数の一般的な構文を知っています。ただし、2 つのテーブルが結合された複雑なケース式があります。ここで私を助けてくれる人はいますか?
CASE
WHEN ISNULL(tblDetail.ProductDiscPct,0)<>0 THEN 'MFG'
WHEN EXISTS (
SELECT 1 FROM ORDER_Shipment os
JOIN [ORDER_Items] oi
ON os.OrderId = oi.orderid
AND oi.MaterialId = tblDetail.MaterialID
AND ISNULL(oi.ItemStatusId,0)=0
AND oi.OrderItemTypeId = 300
AND [tblDetail].[Quantity] = [oi].[Qty]
WHERE CAST(tblInvoice.ARInvID AS varchar) = os.InvNumber
)
THEN 'SPECIAL'
ELSE ''
END AS LnNote
これは、次のように試行した MS アクセス クエリに変換する必要がある MS SQL クエリですが、結果が得られなかった代わりに、アクセス レポートのフィールドのコントロール ソースのドロップダウン オプションが削除されました。 .
IIf(IsNull(qryDetail.ProductDiscountPct <> 0, "MFG", "" )) AS LnNote
これは、私が苦労して取り組んできたケースステートメントの最初の行にすぎません。qryDetail
私のメインクエリの単なるサブクエリです。