2

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私のメインクエリの単なるサブクエリです。

4

2 に答える 2