在VB中先打开recordset记录集, 如果要查询条件,这时可以用select 语句,但我看见资料上说每次要重新打开recordset时都要先关闭,再重新打开是吗?
       如果我在传递记录时,每条都要先检查数据库中是否已经有了此记录,用此方法岂不是每次都要关闭再打开一次吗?哪这样效率不是很低吗,哪位有好一点的方法吗?

解决方案 »

  1.   

    rs.open是针对打开表的,如果你已经打开了,只是对表中数据进行处理,就不能关闭,直到你想要打开另一个表。
      

  2.   

    rs.open是针对打开表的,如果你已经打开了,只是对表中数据进行处理,就不能关闭,直到你想要打开另一个表。
    哪怎么执行select查询语句呢?我这个问题是记录比较多,而且每条都要检查是否已经存在了
      

  3.   

    >哪怎么执行select查询语句呢?我这个问题是记录比较多,而且每条都要检查是否已经存在了是这样:
    如果你使用同一个记录集变量  rs 执行多个 Select 查询,有两种选择:1 如果你仅仅用于读取数据:
    Set rs = cn.Execute("SELECT * ......")这样就不需要关闭,重复地 Set 就可以了。2 如果要编辑或绑定到网格控件:
    rs.Open "SELECT * ......", cn ......就必须在下一次打开前先关闭。
      

  4.   

    >       如果我在传递记录时,每条都要先检查数据库中是否已经有了此记录,用此方法岂不是每次都要关闭再打开一次吗?哪这样效率不是很低吗,哪位有好一点的方法吗?你可以打开记录集查询到全部记录,然后用 Find 或 Filter 方法来查找或过滤记录。最好用客户端游标。这种情况适用于记录数不是特别多时,否则引起虚拟内存磁盘交换,速度更慢。或每次用不同的 Where 子句条件查询。适用于数据特别多时。
      

  5.   

    对of123():
    首先谢谢你,不过我还有问题就是数据记录是3000条左右算不算多呢,并且是远程服务器。还有我每次检查记录时,如果有就只是修改它,没有就添加它,  [1 如果你仅仅用于读取数据:
    Set rs = cn.Execute("SELECT * ......")   ],哪这个方法就不行了哦