Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]一段查询代码问题,一直找不到原因

1楼
飞鱼 发表于:2011/11/22 10:47:00
 我写了一段事件代码,实现的功能是:
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
2楼
狐狸爸爸 发表于:2011/11/22 11:02:00
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.Count > 0   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
3楼
飞鱼 发表于:2011/11/22 11:07:00
  果然解决了!

那么If drs IsNot Nothing为什么不可以呢?
4楼
狐狸爸爸 发表于:2011/11/22 11:10:00

drs怎么可能为Nothing,你这是select,即使没有任何一行,也会返回一个集合,只是集合中的行数等于0而已。

find才会返回nothing

共4 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.