2013-05-08 2 views
0

데이터 (액세스)가 있으며 datetimePicker를 사용합니다. 나는 거의 천 datas 두 날짜 사이의 C# 검색

Name:  Birthday:  
AAAA   05.02.2000 
BBBB   01.08.1995 
CCCC   04.07.1995 
DDDD   05.07.1995 

내가이있는 DateTimePicker와 버튼, datetimePicker2 처음 datetimePicker3 마지막 시간을 사용하고 필터 버튼을 클릭합니다.

private void btnFiltre_Click(object sender, EventArgs e) 
{ 
    table.Clear(); 
    OleDbDataAdapter adtr = new OleDbDataAdapter("SELECT * FROM data WHERE date BETWEEN'" + 
       dateTimePicker2.Text + "' AND '" + dateTimePicker3.Text + "'", cnn);   
    adtr.Fill(table); 
    dataGridView1.DataSource = table; 
} 

그러나 나는 항상 경고를 가지고 : 그들은 내가이 코드를 사용 목록

태어난 1995년 1월 12일을 - 나는 forexample 1995년 1월 1일에 나에게 DataGridView를 표시합니다.

어떻게해야합니까?

+0

(나쁜, 아주 나쁜) 문자열입니다 (글로벌 연결 개체를 사용하지 마십시오)? – devilfish17

답변

1

많은 세부 사항이 누락되었지만 평소와 같이 : 문자열 연결을 사용하여 SQL 명령을 작성하지 마십시오. 사용중인 데이터베이스

  • :
    누락이

    private void btnFiltre_Click(object sender, EventArgs e) 
    { 
        table.Clear(); 
        OleDbDataAdapter adtr = new OleDbDataAdapter("SELECT * FROM data WHERE date BETWEEN ? AND ?", cnn) 
        adtr.SelectCommand.Parameters.AddWithValue("@p1",dateTimePicker2.Value) 
        adtr.SelectCommand.Parameters.AddWithValue("@p2",dateTimePicker3.Value) 
        adtr.Fill(table); 
        dataGridView1.DataSource = table; 
    } 
    

    세부 사항과 같은 매개 변수화 쿼리를 사용? MS-Access 인 경우 date 은 예약어로 대괄호로 묶어야합니다.

  • 어디에서 연결을 초기화합니까?
  • 이 날짜 필드 날짜 시간 또는 경고가 무엇을 얻고있다
+0

대단히 고마워요 ... :))) –