2009-08-10 9 views
0

Ich benutze vs. 2008 mit C#. Ich habe eine .rdlc-Datei und es mit einer objectdatasource. ods hat zwei Datetime-Parameter. Das Format des Datetime-Parameters muss TT-MM-JJJ sein. aber diese Zeit warf eine Ausnahme. Ausnahme ist: Bei der Berichtsverarbeitung ist ein Fehler aufgetreten. String wurde nicht als gültige DateTime erkannt.DateTime Problem in asp.net

Mein Code ist:

 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(); 

Dank für Ihre Hilfe.

Antwort

1

Das zweite Argument SelectParameters zu einem ObjectDataSource für das Hinzufügen sollte explizit das Format der Zeichenfolge Einstellen eines TypeCode Enum

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

Es gibt Überladungen, die 'TypeCode' oder' DbType' annehmen: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.parametercollection.add.aspx – LukeH

+0

@Luke - thanks . Ich verwende .NET 2.0 im Moment und diese Überladung existiert nicht darin (.NET 3.5) :) –

0

Versuchen Sie, wenn Sie ToString nennen:

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

Ich denke, die SelectParameters.Add Ausgabe wurde durch andere Antworten angesprochen; aber Ihr Code leichter zu machen, können Sie auch bei DateTime.ParseExact aussehen wollen:

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

Im Object unter selectparameters, versuchen Sie den Parametertyp von Datetime-String zu ändern. Formatieren Sie dann Ihre Eingabewerte als DateTime.Now.ToString("MM/dd/yyyy");. Der DateTime-Typ gibt eine Menge Probleme + Sql konvertiert die Zeichenfolge dieses Formats automatisch in DateTime.