我写了一段事件代码,实现的功能是:
1、定义一个数组
2、历遍数组中的每一个字符串,在另外一个表中查找这个字符串
3、把找到的内容填充到一个临时表,同时退出查找,如果没有找到,就继续下一个字符串的查找
现在的问题是:
如果数组中的第一个字符串没找到,程序就不会查找下一个字符串的信息了。
大侠帮我看下这段代码,错误到底出在哪里?谢谢!
Dim dr As DataRow=e.DataRow
Dim drs As List(of DataRow)
If e.DataCol.Name="查找的多型号资料" Then '如果没有输入查询则清空该行
If e.DataRow.IsNull("查找的多型号资料") Then
For Each a As DataCol In DataTables("多型号兼容查询").Datacols
dr(a.name)=Nothing
Next
Else
Dim s As String
s=dr("查找的多型号资料")
s=s.ToLower() '统一转换为小写
Dim s1 As String '定义数组中的单个字符串
Dim values() As String '定义一个字符串数组
values=s.split(",") '把s分割后的字符,组成数组values
For Index As Integer = 0 To Values.Length -1 '从数组中取出一个值
s1=Values(Index)
Dim filter As String
filter="[ReplacementFor] like '*" & s1 & "*' or [FitMachineModels] Like '*" & s1 & "*'" '定义查找条件
drs=DataTables("BPB量产电池").Select(filter)
If drs IsNot Nothing Then ‘如果找到了
Dim n As Integer=drs.count
dr("符合数量")=n
dr("可查到的型号")=s1
With DataTables("多兼容型号查询").DataRows '清除临时表所有历史行
.Clear()
End With
Dim f As New Filler '把查找到的结果填充到临时表
f.SourceTable = DataTables("BPB量产电池")
f.filter=filter
f.DataTable = DataTables("多兼容型号查询")
f.DataCols ="产品名称,Code,Capacity,Voltage"
f.Fill()
Exit For '找到的话就退出循环
Else '没找到就继续
Continue For
End If
Next
End If
End If
果然解决了!
那么If drs IsNot Nothing为什么不可以呢?
drs怎么可能为Nothing,你这是select,即使没有任何一行,也会返回一个集合,只是集合中的行数等于0而已。
find才会返回nothing