2017-11-10 8 views
0

特定の日付に手数料の記録を持っています。ここに私のコードです。Cを使用してMSアクセスで特定の日付レコードを取得する

globalxx = 0; 
     string month1 = dateTimePicker2.Value.Month.ToString(); 
     string day1 = dateTimePicker2.Value.Day.ToString(); 
     string year1 = dateTimePicker2.Value.Year.ToString(); 
     string s2 = "#" + month1 + "/" + day1 + "/" + year1 + "#"; 
     DataTable results = new DataTable(); 
     using (OleDbConnection conn = new OleDbConnection(xi)) 
     { 
      OleDbCommand cmd = new OleDbCommand("select * from COMMISSION where DateCommission='" + s2 + "'", conn); 
      cmd.Parameters.AddRange(new OleDbParameter[] 
     { 
      new OleDbParameter("@DateCommission", s2) 
     }); 

      conn.Open(); 
      OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); 
      adapter.Fill(results); 
      dataGridView2.DataSource = results; 

しかし、問題は、それは言って

adapter.Fill(results); 

でエラーが発生しますです「のOleDB Excpetionは、条件式にデータ型の不一致をhandeledされています」

私は助けが必要です。

私のMS Accessのスキーマは次のとおりです。 DateCommission:日付時刻 のDriverName:TEXT DriveVehicleNumber:TEXT CommissionedPrice:NUMBER

私はパラメータになっていないです。

ここにはC#のフロントエンドがあります。 Front End

+0

さらに詳しい情報については、私も質問でDateBetweenを試したことを伝えたいと思います。 –

+0

SQL文字列を変更する必要があります。 'select * from COMMISSION where DateCommission = @ DateCommission' –

+0

それは役に立ちませんでした。 : –

答えて

0

ているような、あなたの日付を処理し、その後、SQLでフォーマットされた文字列式を連結します。

string textDate = dateTimePicker2.Value.ToString("yyyy'/'MM'/'dd"); 
string s2 = "#" + textDate + "#"; 

、その後:

OleDbCommand cmd = new OleDbCommand("select * from COMMISSION where DateCommission = " + s2 + "", conn); 

か(優先)のパラメータを使用データ型DateTimeにdatepickerを直接渡します。

+0

ありがとうございます。私は に問題があります。文字列s2 = "#" + textDate + "#"; 私は日付をとって間違っていました。 –

+0

申し訳ありませんが、_textDateに_single-quote_がありませんでした。 – Gustav

関連する問題