2010-07-26 3 views
0

내 응용 프로그램은 다음을 사용하여 스프레드 시트를 데이터 세트로 읽은 다음 검색 조건 (검색어 및 날짜 범위)의 결과에 따라 정보를 표시합니다.데이터 세트의 행을 건너 뛰는 루프

데이터에 문제가 있습니다. 스프레드 시트에서 처음 400 행을 반환하는 검색을 실행하면 약 200 개의 결과 만 나타납니다. 검색을 실행하기 전에 스프레드 시트에서 검사했기 때문에 검색에서 400 행을 반환해야한다는 것을 알고 있습니다.

내 문제는 내 날짜 비교로 인해 발생할 수 있다고 생각합니다. 나는 문제가 내가 String 값을 비교하고 있다고 생각한다. 그래서 누군가가 나에게 날짜를 비교하는 더 효율적인 방법을 보여줄 수 있다면, 그것은 훌륭 할 것이다. 당신이 날짜와 아무 상관이없는 서로 문자열을 비교하면

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    If ListBox1.Items.Count <> 0 Then : ListBox1.Items.Clear() : End If 
    Dim j As Integer = 0 
    If TextBox1.Text.Length = 4 Then 
     For i As Integer = 0 To CallData.Tables(0).Rows.Count - 1 
      'MsgBox(CallData.Tables(0).Rows(i)(2) & " - FROM(" & DateTimePicker1.ToString & ") TO(" & DateTimePicker2.ToString & ")") 
      If CallData.Tables(0).Rows(i)(3).ToString = TextBox1.Text _ 
      And CallData.Tables(0).Rows(i)(2).ToString > DateTimePicker1.Value.ToString _ 
      And CallData.Tables(0).Rows(i)(2).ToString < DateTimePicker2.Value.ToString Then 
       ListBox1.BeginUpdate() 
       ListBox1.Items.Add(CallData.Tables(0).Rows(i)(2).ToString) 
       ListBox1.EndUpdate() 
       j = j + 1 
      End If 
     Next 

     Label1.Text = j & " records found." 
    End If 
End Sub 

답변

1

, 그것은 순으로 비교합니다 :

여기 내 코드입니다. 행의 개체를 날짜로 변환 한 다음 비교할 수 있습니다.

변경 :

CallData.Tables(0).Rows(i)(2).ToString > DateTimePicker1.Value.ToString 
CallData.Tables(0).Rows(i)(2).ToString < DateTimePicker2.Value.ToString 

에 :

CType(CallData.Tables(0).Rows(i)(2), DateTime) > DateTimePicker1.Value 
CType(CallData.Tables(0).Rows(i)(2), DateTime) < DateTimePicker2.Value 

는, BTW 나는 더 VB 전문가는 아니지만 그러나 나는이 코드

+0

절대적으로 멋진 :-) 트릭을해야 할 것 같아요! 이 변경을 적용한 후, 내 번호가 완벽하게 일치합니다. 고마워요 :) –

관련 문제