在电子表格中读取date和从DataSet中读取date

我的应用程序使用错误排列的Excel电子表格作为数据源。 我说的devise很糟糕,因为除了finddate和时间的列外,没有每行的唯一标识符。

长话短说,我的应用程序使用每行的date和时间作为标识符来检索行中其他列的信息。 这个想法是,用户将从ListBox中select一个date/时间,应用程序将循环访问DataSet,并在右侧列中查找date/时间,并在该行中显示其余的信息。

我的问题是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 

这基本上适用于search,用户将指定一个术语来search(电话号码或(在这种情况下)电话分机)和date范围。 现在,我知道一个事实,电子表格(以及DataSet)具有date列 – 列索引2落在我指定的date范围内并且之后的列包含我的search词的信息,但是,没有得到任何结果。

有任何想法吗?

这个问题可能在你的date比较。

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

此代码比较两个string值,而不是两个date。 如果格式是yyyy / mm / dd以外的任何值,则比较结果将不会达到预期结果。

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

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

我回去尝试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解决了这个问题。