2016-06-16 17 views
0

サーバー上で動作するSQLコード。SqlDataSource SelectCommandにnull値が含まれています

SELECT 
    [LINE_NO], [CUST_ORDER_ID], [PART_ID], 
    [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], 
    [PROMISE_DEL_DATE] 
FROM 
    [CUST_ORDER_LINE] 
WHERE 
    ([CUST_ORDER_ID] = '33742-1' 
    AND [PROMISE_DATE] IS NULL 
    AND [PROMISE_DEL_DATE] IS NULL) 

マイasp.netコード。

SelectCommand = "SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] FROM [CUST_ORDER_LINE] WHERE ([CUST_ORDER_ID] = ? AND [PROMISE_DATE] = ? AND [PROMISE_DEL_DATE] = ?)" 

私は3つのクエリ文字列パラメータを使用しています。約束日と約束納期はnullにすることができます。しかし、これらの値がnullの場合、レコードは返されません。

= ''ではなく、'is null'にSQLを変更するにはどうすればよいでしょうか。

答えて

0

私は、これはあなたが欲しいものだと思う:

  • のParam 1 =受注
  • Paramの2/3は、Paramの4/5の約束日
  • ともに両方の約束の納期
です

コード:

SelectCommand = "SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] FROM [CUST_ORDER_LINE] WHERE [CUST_ORDER_ID] = ? AND (? IS NULL OR [PROMISE_DATE] = ?) AND (? IS NULL OR [PROMISE_DEL_DATE] = ?)" 

SQL

DECLARE @P1 INT, @P2 DATETIME, @P3 DATETIME 

SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] 
FROM [CUST_ORDER_LINE] 
WHERE [CUST_ORDER_ID] = @P1 
AND (@P2 IS NULL OR [PROMISE_DATE] = @P2) 
AND (@P3 IS NULL OR [PROMISE_DEL_DATE] = @P3) 
+0

ありがとうございます。素晴らしい作品です。私はasp.netに新しいので、私は余分なパラメータ間の接続をしていない。技術的に言えば、SQLはAND(@ P2 IS NULL OR [PROMISE_DATE] = @ P3) AND(@ P4はNULLまたは[PROMISE_DEL_DATE] = @ P5) – redhook99