Vb.net 用于循环跳过数据集中的行
我的应用程序使用For…Next循环将电子表格读入数据集中,然后根据搜索条件(搜索词和日期范围)的结果显示其中的信息 我的数据有问题,如果我运行一个搜索,应该返回电子表格中的前400行,我只得到大约200个结果。我知道搜索应该返回400行,因为我在运行搜索之前在电子表格中检查了它 我想我的问题可能是因为我的日期比较。我想问题可能是我在比较字符串值,所以如果有人能给我展示一种更有效的比较日期的方法,那就太好了 这是我的密码:Vb.net 用于循环跳过数据集中的行,vb.net,datetime,date,dataset,Vb.net,Datetime,Date,Dataset,我的应用程序使用For…Next循环将电子表格读入数据集中,然后根据搜索条件(搜索词和日期范围)的结果显示其中的信息 我的数据有问题,如果我运行一个搜索,应该返回电子表格中的前400行,我只得到大约200个结果。我知道搜索应该返回400行,因为我在运行搜索之前在电子表格中检查了它 我想我的问题可能是因为我的日期比较。我想问题可能是我在比较字符串值,所以如果有人能给我展示一种更有效的比较日期的方法,那就太好了 这是我的密码: Private Sub Button1_Click(ByVal send
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
Private子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
如果ListBox1.Items.Count为0,则:ListBox1.Items.Clear():如果结束
尺寸j为整数=0
如果TextBox1.Text.Length=4,则
对于i As Integer=0,调用data.Tables(0).Rows.Count-1
'MsgBox(CallData.Tables(0).Rows(i)(2)和“-从(“&DateTimePicker1.ToString&”)到(&DateTimePicker2.ToString&”)
如果调用数据.Tables(0).Rows(i)(3).ToString=TextBox1.Text_
和CallData.Tables(0).Rows(i)(2).ToString>DateTimePicker1.Value.ToString_
和CallData.Tables(0).Rows(i)(2).ToString
当您将字符串相互比较时,它与日期无关,而是按字母顺序进行比较。
您可以将对象从行强制转换为日期,然后进行比较
更改:
CallData.Tables(0).Rows(i)(2).ToString > DateTimePicker1.Value.ToString
CallData.Tables(0).Rows(i)(2).ToString < DateTimePicker2.Value.ToString
CallData.Tables(0).Rows(i)(2).ToString>DateTimePicker1.Value.ToString
CallData.Tables(0).Rows(i)(2).ToString
致:
CType(CallData.Tables(0).Rows(i)(2),DateTime)>DateTimePicker1.Value
CType(CallData.Tables(0).Rows(i)(2),DateTime)
顺便说一句,我不是vb专家,但我想这段代码应该可以做到:-)绝对棒!!!应用此更改后,我的数字完全匹配。非常感谢:)
CType(CallData.Tables(0).Rows(i)(2), DateTime) > DateTimePicker1.Value
CType(CallData.Tables(0).Rows(i)(2), DateTime) < DateTimePicker2.Value