2017-07-03 16 views
-1

現在、日付範囲のあるグラフをフィルタリングする必要のあるWebアプリケーションを実行中です。この範囲は、2つの異なるテキストボックスに日付を渡す2つのカレンダーで選択されています。私は2つの異なる方法で試みました:filterparametersと "between @ date1 and @ date2"クエリ。文字列から日付/時刻を変換する際に文字列から日付および/または時刻を変換するときに変換に失敗しました。

の変換に失敗しました:

事は、私が言う問題を取得することです。 このエラーは、2番目の期間を選択した場合にのみ表示されます。カレンダーから日付を選択する順序は問題ありません。日時変換も確認しました。

私はすでにdebbugedていると私は私のコードでエラーを参照してくださいいけない:

protected void Calendar2_SelectionChanged(object sender, EventArgs e) 
    { 
     txtDate2.Text = Calendar2.SelectedDate.ToShortDateString(); 
     Calendar2.Visible = false; 
    } 

    protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
    { 
     txtDate1.Text = Calendar1.SelectedDate.ToShortDateString(); 
     Calendar1.Visible = false; 
    } 

これは、コードとクライアント側での私のクエリです:

protected void btnShow_Click(object sender, EventArgs e) 
{ 
    DateTime date1 = Convert.ToDateTime(txtDate1.Text); 
    DateTime date2 = Convert.ToDateTime(txtDate2.Text); 

    using (SqlConnection conn = new SqlConnection(CONNECTION_STRING)) 
    { 
     using (SqlCommand cmd = new SqlCommand()) 
     { 
      try 
      { 
       cmd.Connection = conn; 
       cmd.CommandType = System.Data.CommandType.Text; 
       cmd.CommandText = "select Family, sum (TimeMins) as sumfield from DTCres where DateCres between @Date1 and @Date2 group by Family order by sumfield desc "; 
       cmd.Parameters.AddWithValue("@Date1", date1); 
       cmd.Parameters.AddWithValue("@Date2", date2); 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       //SqlDataReader dr = cmd.ExecuteReader(); 

       //if (dr.HasRows == !true) 
       //{ 
       // //dateLabel.Visible = true; 
       //} 
       //if (dr.HasRows == true) 
       //{ 
       // //dateLabel.Visible = false; 
       //} 
       conn.Close(); 
      } 
      catch (Exception nessie) 
      { 
       string doc = nessie.Message; 
       //dateLabel.Visible = true; 
      } 
     } 
    } 
} 

<asp:SqlDataSource ID="SqlDS" runat="server" ConnectionString="<%$ ConnectionStrings:DTCrestronConnectionString %>" 
        SelectCommand="select Family, sum (TimeMins) as sumfield from DTCres where DateCres between @Date1 and @Date2 group by Family order by sumfield desc" 
        FilterExpression="Family='{0}'"> 
        <SelectParameters> 
         <asp:ControlParameter Name="Date1" ControlID="txtDate1" PropertyName="Text" Type="String"/> 
         <asp:ControlParameter Name="Date2" ControlID="txtDate2" PropertyName="Text" Type="String"/> 
        </SelectParameters> 
        <FilterParameters> 
         <asp:ControlParameter ConvertEmptyStringToNull="false" Name="Family" ControlID="cmbChartFam1" PropertyName="Text" /> 
        </FilterParameters> 
       </asp:SqlDataSource> 
      </td> 

お願いします。どんな助けもよかったです。ありがとうございます。

+1

具体的にどのラインがエラーを投げていますか?これは、質問に賛成するDateTime変換の1つのように聞こえます。具体的には変換しようとしている文字列は何ですか? –

+0

これを回答として入力して、人々があなたがそれを理解したこととあなたが見つけたものを知っていることを知ってください。参照:https://stackoverflow.com/help/self-answer –

答えて

0

お返事ありがとうございます!私はすでにそれを解決しました。それはテキストボックスの値が全く変換されないようですので、私はこれをしました:txtDate1.Text = Calendar1.SelectedDate.Date.ToString("yyyy-MM-dd");これを持っているのではなくtxtDate2.Text = Calendar2.SelectedDate.ToShortDateString();私はToShortDateStringがここで矛盾を作り出していると思っています。

関連する問題