2012-01-08 22 views
0

我正在使用SqlDataSource控件列出用戶選擇日期時的搜索結果,如果日期爲空,則列出所有記錄。SqlDataSource ControlParameter空值

<asp:SqlDataSource ID="SqlDataSource1" runat="server" meta:resourcekey="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:Test_ConnectionString %>" 
SelectCommand="select MeetingID, MeetName as MeetingName, MeetDate, MeetTime from Meeting where Status ='Recorded' and Case when @sel_to_date ='' then MeetDate <= '2200-12-31' else MeetDate = @sel_to_date end order by MeetDate desc, Meettime desc "> 
<SelectParameters>       
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="datepicker" Name="sel_to_date" DefaultValue="" PropertyName="Text" Type="String"/> 
</SelectParameters> 
</asp:SqlDataSource> 

但它返回語法錯誤。

我希望所有用戶列出用戶離開文本框時的所有記錄。怎麼做?

問候, 喬

回答

0

您的case聲明不正確。 SQL中的case語句應該返回一個值,而不是執行比較。見CASE (Transact-SQL)

一個解決方案是用一個有條件像這樣更換case

select 
    MeetingID, MeetName as MeetingName, MeetDate, MeetTime 
from Meeting 
    where Status ='Recorded' 
    and 
    (
     (@sel_to_date ='' and MeetDate <= '2200-12-31') 
     or 
     MeetDate = @sel_to_date 
    ) 
order by MeetDate desc, Meettime desc 

爲方便起見,這裏是單行,所以你可以把它複製,粘貼到數據源聲明:

select MeetingID, MeetName as MeetingName, MeetDate, MeetTime from Meeting where Status ='Recorded' and ((@sel_to_date ='' and MeetDate <= '2200-12-31') or MeetDate = @sel_to_date) order by MeetDate desc, Meettime desc 
+0

非常感謝。有用 – 2012-01-08 11:49:00

1
<asp:SqlDataSource ID="SqlDataSource1" runat="server" meta:resourcekey="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:Test_ConnectionString %>" 
SelectCommand="select MeetingID, MeetName as MeetingName, MeetDate, MeetTime from Meeting where Status ='Recorded' and Case when @sel_to_date is null then MeetDate <= '2200-12-31' else MeetDate = @sel_to_date end order by MeetDate desc, Meettime desc "> 
<SelectParameters>       
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="datepicker" Name="sel_to_date" DefaultValue="" PropertyName="Text" Type="String"/> 
</SelectParameters> 
</asp:SqlDataSource> 

我沒有檢查,但如果你通過比其轉換爲null,所以你必須檢查 @sel_to_date空值爲null,而不是@sel_to_date =「」 用我代碼片段。