2017-11-10 12 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 액세스 스키마는 다음과 같습니다 DateCommission : 날짜 시간 를 DriverName : TEXT DriveVehicleNumber : TEXT CommissionedPrice : 번호

내가 매개 변수에 가지고 있지 않다.

다음은 C#의 프런트 엔드입니다. Front End

+0

더 많은 정보를 얻으려면 나는 또한 쿼리에서 DateBetween을 시도했음을 알리고 싶다. –

+0

당신은 sql 문자열을 변경해야합니다 : '선택 *에서 커미션 어디 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); 

또는을 (선호)를 매개 변수의를 사용 데이터 유형 날짜 시간을 datepicker에 직접 전달합니다.

+0

감사합니다. 에 문제가 있습니다. s2 = "#"+ textDate + "#"; 데이트를하는 동안 실수를했습니다. –

+0

죄송합니다. 'textDate'에 _single-quote_이 없습니다. – Gustav