2010-02-23 2 views
2

두 개의 시간 열이있는 테이블이 있습니다. 하나는 로그 아웃 시간 인 logout입니다. 기본적으로 선택된 것보다 크고 선택한 것보다 작은 두 개 사이를 필터링 할 수 있기를 원합니다. 월별 달력을 사용하여 시간대를 지정했지만 제대로 작동하지 않습니다. 거기에서 표의 4 열을 gridview에 추가하고 싶습니다. DB를의 날짜는 다음과 같은 형식입니다 :vb.net에서 올바른 시간 범위로 SQL 필터링

2/23/2010 11:17:01 AM

내가 단일 테이블의 요소, 또는 열하지만 전체하지 행을 얻는 방법을 알고있다.

그래서 나는 올바른 SQL에 대한 필터를 얻는 다음 결과를 테이블에 바인딩하는 두 가지 문제가 있다고 생각합니다.

가 여기에 지금까지 내 코드입니다 :

SLaks 내 질문의 대부분에 응답 한

Dim cn As OleDbConnection 
    Dim cmd As OleDbCommand 
    Dim str As String 
    Dim dr As OleDbDataReader 
    Dim date1 As Date 
    Dim date2 As Date 


    If (Not SubmitNewToDB(session)) Then 
     MsgBox("error") 
    End If 
    Try 
     cn = New OleDbConnection("Provider=microsoft.Jet.OLEDB.4.0;Data Source=G:\Sean\BMSBonder3_0.mdb;") 
     cn.Open() 
     str = "Select BonderIdentifier, UserName, Login, Logout From [Session] Where (Login < " & MonthCalendar1.SelectionEnd _ 
      & " AND Logout > " & MonthCalendar1.SelectionStart & ") AND BonderIdentifier = " & session.bonderIdentifier 

     cmd = New OleDbCommand(str, cn) 
     dr = cmd.ExecuteReader 

     While dr.Read() 
      If dr.Item(0).ToString <> "" Then 
       DataGridView1.Rows.Add(dr.Item(0)) 
      End If 
     End While 
     dr.Close() 
     cn.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

편집, 한 가지 문제가 남아있다. 월 캘린더가 하루 만 선택하고 그 날짜 값을 반환 할 수 있도록 만드는 방법을 알아야합니다. 위에서 언급 한 것처럼 DB에 있기 때문에 시간 문제가있는 것처럼 보입니다. 단지 날짜를 비교하는 것으로는 충분하지 않습니다.

시간을 포함하여 날짜를 조정하는 방법을 잘 모르겠습니다.

답변

2
같은 당신은 매개 변수를 사용한다

:

str = "Select BonderIdentifier, UserName, Login, Logout From [Session] Where Login >= ? AND Login <= ? AND BonderIdentifier = ?" 

cmd = New OleDbCommand(str, cn) 
cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionStart 
cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionEnd) 
cmd.Parameters.AddWithValue("BID", session.bonderIdentifier) 

네 개의 컬럼에 대한 값을 추가하려면, 당신이 쓸 수

DataGridView1.Rows.Add(dr.Item(0), dr.Item(1), dr.Item(2), dr.Item(3)) 
+0

은 OleDb 필요는 주문? @parameters라는 매개 변수 대신 매개 변수 자리 표시자를 사용합니다. –

+0

고마워,하지만 내 필터가 여전히 제대로 작동하지 않습니다. –

+1

나는 대답을 편집했다. 지금 해보십시오. – SLaks