Для пропуска строк в DataSet - PullRequest
0 голосов
/ 26 июля 2010

Мое приложение использует цикл For ... Next, чтобы прочитать электронную таблицу в DataSet и затем отобразить информацию из нее на основе результатов условий поиска (условия поиска и диапазон дат).

I'mвозникла проблема с данными, когда при запуске поиска, который должен вернуть первые 400 строк в электронной таблице, я получаю только около 200 результатов.Я знаю, что поиск должен вернуть 400 строк, потому что я проверил это в электронной таблице перед запуском поиска.

Я думаю, что моя проблема может быть вызвана моими сравнениями дат.Я думаю, что проблема может заключаться в том, что я сравниваю строковое значение, поэтому, если кто-нибудь сможет показать мне более эффективный способ сравнения дат, то это будет здорово.

Вот мой код:

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 Ответ

1 голос
/ 26 июля 2010

Когда вы сравниваете строки друг с другом, они не имеют ничего общего с датами, они сравниваются по алфавиту.Вы можете просто привести объект из строки к дате, а затем сравнить.

Изменить:

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

Кстати, я неVB эксперт, но я думаю, что этот код должен сделать свое дело: -)

...