2014-01-06 43 views
1

錯誤我有了一個日期作爲ControlParameter一個SqlDataSource一個vb.net網站。這在英國運作良好,但是當在德國打開相同的頁面時,由於日期格式不同,它會產生錯誤。日期在ControlParameter導致與日期格式

見下

<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>" 
    SelectCommand=" 
     SELECT * 
     from data 
     where 
     DATEADD(minute, time, date) > convert(datetime,@dt,104) 
"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="DateSelection" Name="dt" PropertyName="SelectedItem.text" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

示例代碼會有人知道如何解決這個問題

感謝

+0

有什麼錯誤? – jadarnel27

+0

錯誤是:從字符串轉換日期和/或時間時轉換失敗。 – Selrac

+0

請添加有效日期的示例以及導致錯誤的日期。 – jadarnel27

回答

0

我真的不明白你的SQL邏輯,假設邏輯是合理的,我懷疑主要原因是因爲SelectedItem的輸出被視爲string

因此,如果客戶端PC的日期格式爲「dd/MM/yyyy」,那麼值"31/12/2014"string可以被解釋爲2014年12月31日。

但是,如果客戶端PC的日期格式爲「MM/DD/YYYY」然後會有,因爲沒有31個月是一個錯誤。

而不是在前端使用ControlParameter,你可以嘗試在後端設置SelectCommand,這應該給你更多的自由操縱你的數據。


aspx頁面:

<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>" 
    SelectCommand="" > 
</asp:SqlDataSource> 

aspx.vb頁:

'assuming "SelectedItem" is a textbox 
dim str As String = Convert.ToDateTime(SelectedItem.Text).ToString("dd MMM yyyy") 

SQL.SelectCommand = "SELECT * from data where DATEADD(minute, time, date) > convert(datetime," + str + ",104)" 


爲什麼我轉換日期爲 「DD MMM YYYY」 格式的原因是因爲不管是什麼日期格式的PC使用,「2014年12月31日」將永遠被視爲12月31日2014年