2017-10-19 8 views
-3

私のコードに問題があります。私は2つの日付の間でフィルタリングしたい。 ここに私のコードです。私はMicrosoft Accessデータベースを使用しています。datetimepickerを使用して1つ以上の必須パラメータに値が指定されていません

private void button2_Click(object sender, EventArgs e) 
{ 
    OleDbCommand cmd = new OleDbCommand("Select * From Table2 where TransacDate between '" + dateTimePicker1.Value.ToString() + "' And '" + dateTimePicker2.Value.ToString() + "'", conn); 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    dataGridView1.DataSource = ds; 
} 

ここで、データグリッドビューには空の行があります。

+0

実行しているSQLコードの実際の結果の文字列は何ですか?あなたはデータベース上でそれを手動で実行できますか? – David

+0

まず問合せを文字列に入れ、その文字列の内容を表示できますか? "+"との間のTransac_Date dataTimePicker1.Value.ToString( "MM-dd-yyy")+ "'And'" + dateTimePicker2.Value.ToString( "MM-dd-yyy" dd-yyy ")+" '";' – oerkelens

+0

文字列に置いた。 @oerkelens – dad

答えて

2

私は最近、datetime形式で同じ間違いをしました。

試しAccessで

"MM-dd-yyyy" 

代わりの

"MM-dd-yyy" 
+0

それは私の理論です、それはyyかyyyyのどちらかがかかります。 yyyはこれを投げているかもしれません。 –

+0

私はすでにyyyからyyyyに変更していますが、エラーは同じです。 – dad

+0

あなたはそれが掛かっているdatetimepickerですか?この変更を試してみてください。 'OleDbDataAdapter da =新しいOleDbDataAdapter(cmd、conn);'私は常に参照への接続が必要と考えています。 –

0

日付が# octothorpesで囲む必要があります。

変更し、あなたのコードに:

"Select * From Table2 where Transac_Date between #" + dateTimePicker1.Value.ToString("MM-dd-yyyy") + "# And #" + dateTimePicker2.Value.ToString("MM-dd-yyyy") + "#"; 
+0

私は '#'を試しましたが、同じエラーが表示されます。 – dad

0

それは、このSQL文を生成している何のアプリか、フロントエンドへと不明です。 Access構文のようには見えません。

私はAccessで標準のクエリデザインビューを使用することをお勧めします。検索するデータセットを作成するクエリを作成します。次に、このクエリをオプション/ SQLビューに配置して、構文を確認できます。

関連する問題