2017-04-04 9 views
0

私はmsアクセステーブル 'AddDate'を持っています。 2つの列 'Id' - アウトナンバー、 'AddDate' - 日付時刻。dateTimePickerからmsアクセスデータベースに日付を保存し、2つの日付間でレコードを検索します。

VS 2015では、日付の値を挿入するdateTimePickerがあるフォームがあります。

私は日付を挿入するには、次の問合せを使用します。私はレコードを持っているとき

 conn.Open();string str = "Insert into AddDate ([AddDate]) Values(@AddDate)"; 
     OleDbCommand cmd = new OleDbCommand(str, conn); 
     cmd.Parameters.AddWithValue("@AddDate", dateTimePicker1.Value.ToShortDateString()); 
     cmd.ExecuteScalar(); 
     conn.Close(); 

をし、私は2つの日付の間、これらのレコードを検索したい入りました。そのために 私は2つのDateTimePickerを持っていると私はDataGridViewの中で取得するには、次のコードを使用:MSアクセステーブルAddDate列が日時に設定されている場合

 OleDbDataAdapter odb = new OleDbDataAdapter("Select * from AddDate where AddDate Between '"+dateTimePicker1.Value.ToShortDateString() + "' and '"+ dateTimePicker2.Value.ToShortDateString() + "' ", conn); 
     DataTable dt = new DataTable(); 
     odb.Fill(dt); 

     dataGridView1.DataSource = dt; 

今、選択クエリはエラーを与える「抽出条件式でデータ型Missmatch 'そして、私がアクセステーブルの列のデータ型プロパティをテキストに変更すると、クエリは機能しますが、月に関係なく2つの日付の間にテーブルからすべてのレコードが収集されます。

例と完全なコードで説明してください。また、MS Access 2010でDataTypeプロパティを指定してください。

ありがとうございます。

よろしくお願いします。Manoj Yadwad。

答えて

0

日付は、このように、文字列ではありません。

cmd.Parameters.AddWithValue("@AddDate", dateTimePicker1.Value); 

いますが、有効な日付式をフォーマットする必要があり連結する:

OleDbDataAdapter odb = new OleDbDataAdapter("Select * from AddDate where AddDate Between #" + dateTimePicker1.Value.ToString("yyyy'/'MM'/'dd") + "# and #" + dateTimePicker2.Value.ToString("yyyy'/'MM'/'dd") + "#", conn); 

良いが、ここにもパラメータを使用することです。

+0

ありがとうグスタフ。それは本当にとても簡単に働いた。あなたの答えは、私が必要としていたポイントまで正確でした。もう一度ありがとうございます。 –

関連する問題