2010-02-24 1 views
0

monthcalendar의 selectionstart 및 selectend 특성을 사용하여 테이블의 두 로그인 날짜 사이를 필터링하려고합니다. 하루를 선택했을 때 제대로 작동하지 않습니다. 내가 문제의 날 다음날과 그 다음날을 선택한 경우 그럴 것입니다. 내 DB의 시간 값은 다음과 같습니다.monthcalendar 컨트롤을 사용하여 하루를 선택하여 SQL 용 필터로 사용할 때 예상대로 작동하지 않습니다.

2/23/2010 11:17:01 AM 

로그인과 로그 아웃 모두 해당 유형입니다. 나는 selectionstart와 selection end를 사용할 때 mm/dd/yyyy를 얻었고 DB에있는 것은 그와 시간이라는 느낌을 가지고있다.

여기 내 코드입니다 :

Dim cn As OleDbConnection 
    Dim cmd As OleDbCommand 
    Dim str As String 
    Dim dr As OleDbDataReader 

    DataGridView1.Rows.Clear() 

    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 >= ? AND Logout <= ? AND BonderIdentifier = ?" 
     cmd = New OleDbCommand(str, cn) 
     cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionStart) 
     cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionEnd) 
     cmd.Parameters.AddWithValue("BID", ListBox1.SelectedItem) 

     dr = cmd.ExecuteReader 

     While dr.Read() 
      If dr.Item(0).ToString <> "" Then 
       DataGridView1.Rows.Add(dr.Item(0), dr.Item(1), dr.Item(2), dr.Item(3)) 

      End If 
     End While 

     dr.Close() 
     cn.Close() 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
+0

사이'로그인으로 시도? 그리고? '? –

+0

코드 부분이 잘못되었습니다. 위의 내용을 변경했습니다. –

+0

DB의 로그인 및 로그 아웃 값은 어떤 유형입니까? – Arvo

답변

0

와우, 정말 늦게 답장을하지만,이 찾고 어쩌면 누군가가이 페이지를 건너 때문에 나는 그것을하고 있어요.

내가 사용하는 대신 생각 : 당신이 거리에서 문제를 읽어보십시오

cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionStart) 
cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionEnd) 

당신은

cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionRange.Start) 
cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionRange.End) 
+0

'SelectionRange'를 추가하면 문제가 해결됩니다. – Yaroslav

+0

그것은 더 긴 코드와 정확히 동일합니다. https://msdn.microsoft.com/en-us/library/system.windows.forms.monthcalendar.selectionstart(v=vs.110).aspx – Sjoerd

-1

를 사용해야합니다, 당신은 당신이 당신의 로그 아웃 후 로그인을 할 수 없습니다 알게 될 것이다 날짜, 로그 아웃과 마찬가지로 로그인 날짜 전에 로그 아웃 할 수 없습니다. 즉, 쿼리에서 로그인 및 로그 아웃을위한 경계를 지정해야합니다. 귀하의 질의는 다음과 같아야합니다

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

매개 변수가 될 것입니다 여기서

cmd.Parameters.AddWithValue("Start1", MonthCalendar1.SelectionRange.Start) 
cmd.Parameters.AddWithValue("Start2", MonthCalendar1.SelectionRange.End) 
cmd.Parameters.AddWithValue("End1", MonthCalendar1.SelectionRange.Start) 
cmd.Parameters.AddWithValue("End2", MonthCalendar1.SelectionRange.End) 
+0

나는 결과가 훨씬 줄어들 것이라고 생각합니다. 해결책은 End 값에 하루를 추가하는 것입니다. 그런 식으로 전날 모든 시간을 포함하게됩니다. – Sjoerd