Чтение дат в электронной таблице и из набора данных - PullRequest
1 голос
/ 22 июля 2010

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

Короче говоря, мое приложение использует дату и время в каждой строке в качестве идентификатора для извлечения информации из других столбцов в строке. Идея состоит в том, что пользователь выберет дату / время из ListBox, в это время приложение перебирает DataSet и находит дату / время в правом столбце и отображает остальную информацию в этой строке.

Моя проблема в том, что элемент управления ListBox не заполняется, и я не понимаю, почему ...

Вот пример строки из электронной таблицы: (Каждый | символ представляет границу ячейки)

Team - FNB | O | 2010/02/18 08:59:24 | 5034 | Frederico Turnbridge | 27839963586 | SA - MOBILE - (ZA) | | 69 | O_NORMAL | | 00:01:06 |R 2.83

Вот мой код:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim j As Integer = 0
    If TextBox1.Text.Length = 4 Then
        For i As Integer = 0 To CallData.Tables(0).Rows.Count - 1
            If CallData.Tables(0).Rows(i)(3).ToString = TextBox1.Text _
            And CallData.Tables(0).Rows(i)(2).ToString > DateTimePicker1.ToString _
            And CallData.Tables(0).Rows(i)(2).ToString < DateTimePicker2.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

Это в основном работает при поиске, где пользователь указывает термин для поиска (будь то номер телефона или (в данном случае) добавочный номер телефона) и диапазон дат. Теперь я точно знаю, что в электронной таблице (и, следовательно, в DataSet) есть информация, где столбец даты - индекс столбца 2 - попадает в указанный диапазон дат, а столбец после него содержит мой поисковый запрос, но Я не получаю никаких результатов.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

ОК, серьезная ошибка новичка здесь.

Я вернулся и попробовал MsgBox(DateTimePicker1.ToString), и результат оказался не таким, как я думал.

То, что я должен был сделать, было:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim j As Integer = 0
    If TextBox1.Text.Length = 4 Then
        For i As Integer = 0 To CallData.Tables(0).Rows.Count - 1
            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

Изменение DateTimePicker1.ToString на DateTimePicker1.Value.ToString решает проблему.

0 голосов
/ 22 июля 2010

Проблема может быть в вашем сравнении дат.

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

Этот код сравнивает два строковых значения, а не две даты.Если формат отличается от гггг / мм / дд, сравнение не даст желаемого результата.

Помимо проблемы сравнения, я бы предложил использовать ADO.NET для полученияданные из файла Excel, а не ваш текущий подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...