2009-08-10 62 views
0

我使用v.s 2008與c#。 我有一個.rdlc文件,它使用objectdatasource。 ods有兩個日期時間參數。 該日期時間參數的格式必須是dd-MM-yyy。但是那個時候拋出了一個異常。 例外情況是:報告處理期間發生錯誤。 字符串未被識別爲有效的DateTime。在asp.net中的DateTime問題

我的代碼是:

 int iBaslangicYil = txtIlkTarih.Text.Substring(6, 4).To<int>(); 
     int iBaslangicGun = txtIlkTarih.Text.Substring(0, 2).To<int>(); 
     int iBAslangicAy = txtIlkTarih.Text.Substring(3, 2).To<int>(); 
     DateTime dtBaslangic = new DateTime(iBaslangicYil, iBAslangicAy, iBaslangicGun); 

     int iBitisYil = txtIkinciTarih.Text.Substring(6, 4).To<int>(); 
     int iBitisGun = txtIkinciTarih.Text.Substring(0, 2).To<int>(); 
     int iBitisAy = txtIkinciTarih.Text.Substring(3, 2).To<int>(); 
     DateTime dtBitis = new DateTime(iBitisYil, iBitisAy, iBitisGun); 

     rvTarihAraliginaGoreSeansSayilari.Visible = true; 
     odsTarihAraliginaGoreSeansSayisi.SelectParameters.Add("refTarih1",DbType.DateTime,dtBaslangic.ToString()); 
     odsTarihAraliginaGoreSeansSayisi.SelectParameters.Add("refTarih2", System.Data.DbType.DateTime, dtBitis.ToString()); 
     odsTarihAraliginaGoreSeansSayisi.DataBind(); 
     rvTarihAraliginaGoreSeansSayilari.LocalReport.Refresh(); 

感謝您的幫助。

回答

1

添加SelectParametersObjectDataSource的第二個參數應該是一個TypeCode枚舉

odsTarihAraliginaGoreSeansSayisi.SelectParameters.Add("refTarih1",TypeCode.DateTime ,dtBaslangic.ToString()); 
+0

有重載採取'TypeCode'或'DbType':http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.parametercollection.add.aspx – LukeH 2009-08-10 10:48:03

+0

@Luke - 謝謝。我目前正在使用.NET 2.0,並且它中沒有重載(.NET 3.5):) – 2009-08-10 11:00:16

0

嘗試設置字符串的格式明確,當你調用ToString

odsTarihAraliginaGoreSeansSayisi.SelectParameters 
    .Add("refTarih1", DbType.DateTime, dtBaslangic.ToString("yyyy'-'MM'-'dd"); 
odsTarihAraliginaGoreSeansSayisi.SelectParameters 
    .Add("refTarih2", DbType.DateTime, dtBitis.ToString("yyyy'-'MM'-'dd"); 
0

我覺得SelectParameters.Add問題已由其他答案解決;而是爲了讓自己的代碼更容易,你可能也想看看DateTime.ParseExact

string s = "01-02-2003"; 
DateTime when = DateTime.ParseExact(s, "dd-MM-yyyy", 
    CultureInfo.InvariantCulture); // sine no locale issues in the above 
0

在ObjectDataSource控件,selectparameters下,嘗試從日期時間更改參數類型爲字符串。然後將您的輸入值格式化爲DateTime.Now.ToString("MM/dd/yyyy");。 DateTime類型給出了很多問題+ sql自動將該格式的字符串轉換爲DateTime。