在电子表格中读取与DataSet之间的日期

时间:2010-07-22 11:58:28

标签: vb.net excel dataset

我的应用程序使用排列错误的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

这基本上适用于搜索,其中用户将指定要搜索的术语(无论是电话号码还是(在这种情况下)电话分机)和日期范围。 现在,我知道电子表格(以及数据集)的信息,其中日期列 - 列索引2 - 在我指定的日期范围内,之后的列包含我的搜索词,但是我我没有得到任何结果。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题可能出在您的日期比较中。

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

此代码比较两个String值,而不是两个日期。如果格式不是yyyy / mm / dd,则比较将没有所需的结果。

除了比较问题,我建议使用ADO.NET从Excel文件中检索数据,而不是当前的方法。

答案 1 :(得分:0)

好的,这里有严重的新手错误。

我回去试了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可以解决问题。