数据源不是来自数据库,而是通过以下代码直接生成(这些代码是测试的),但是执行rs.Find这一句时,提示如图的错误
Dim rs As Recordset
Private Sub Command1_Click()
    rs.Find "第2列='20'"
End SubPrivate Sub Form_Load()
    Set rs = New Recordset
    Dim i As Integer, j As Integer
    For i = 0 To 2
        rs.Fields.Append "第" & i & "列", adVariant
    Next i
    rs.Open
    For i = 0 To 3
        rs.AddNew
        For j = 0 To 2
            rs.Fields(j) = (j + i + 1) ^ 2 + (j + i + 1)
        Next j
    Next i
    Set MSHFlexGrid1.DataSource = rs
End Sub
因为我的数据非常多,想判断是否存在,如果存在就不做进一步的计算,因此想到用Recordset查找,这样速度也许快些,现在只能保留一部分,然后通过循环查找,如果原来有则跳过还有没有其它更好的方法?

解决方案 »

  1.   

    多数是这个类型:adVariant,这个类型可以包含对象的,可能不能执行find操作,尝试改一下为varchar或其它类型...
      

  2.   

    rs.Fields.Append "第" & i & "列", adVariant 改为
    rs.Fields.Append "第" & i & "列", adbStr 试试
      

  3.   


    果然是它,谢谢
    不知道还有没有比用Recordset更好的方法
      

  4.   

    如果都是数字,就用boolean标志出现过的值,这样应该是最快的.....
      

  5.   

    http://topic.csdn.net/u/20090730/17/bf9fe5a5-f2e2-400b-9e39-afde508df6ca.html
    该链接是我发的一个帖子,但是没有人回帖,准备结贴散分,请有心人顶帖吧。
      

  6.   

    sql语句里本来就是能判断出这个字段的类型是什么类型的呀
      

  7.   


    该固定长度的二进制串,数量非常多,如果穷举的话,这辈子估计是没有希望了,因此,只能记录已经计算过的部分,得到新的字符串的时候与原来的比较,如果不同进行下一步计算,相同则将原来的计算结果复制过来。
    现在基本上已经采用recordset的方式实现了。但是不知道recordset的最多可以保存多少记录?记录数达到多少时会影响查找速度?
    另外也想把这些记录存入到Access数据库中,这样可以多次调用对比,但是担心因为记录数太大的时候是不是影响查找速度?