好奇怪啊,我用adodc控件就能够取得数据
Adodc1.RecordSource = "Select * from 请购单 where 申请日期 is not null"
Adodc1.Refresh
Dim i As Integer
i = Adodc1.Recordset.RecordCount
我自己定义connection和recordset却取不到
Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=采购"
Set rs = New ADODB.Recordset
rs.Open "Select * from 请购单 where 申请日期 is not null", cnn, adOpenStatic, adLockOptimistic
其中,cnn的string是从adodc里面的使用连接字符串复制过来的

解决方案 »

  1.   

    设置
    rs.cursorlocation=adUseClient
      

  2.   

    使用:
    Set cnn = New ADODB.Connection
    cnn.CursorLocation=adUseClientcnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=采购"
      

  3.   

    谢谢,
    可是
    rs.cursorlocation=adUseClient
    cnn.CursorLocation=adUseClient
    是什么意思哪?为什么要用??
      

  4.   

    那为什么以前没用也可以操作??只有不是取(is not null)就可以
      

  5.   

    CursorLocation 属性
          设置或返回游标服务的位置。设置和返回值设置或返回可设置为以下某个常量的长整型值。常量 说明 
    adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。 
    adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。 
    adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。 
    说明该属性允许在可用于提供者的各种游标库中进行选择。通常,可以选择使用客户端游标库或位于服务器上的某个游标库。该属性设置仅对属性已经设置后才建立的连接有影响。更改 CursorLocation 属性不会影响现有的连接。对于 Connection 或关闭的 Recordset 该属性为读/写,而对打开的 Recordset 该属性为只读。由 Execute 方法返回的游标继承该设置。Recordset 将自动从与之关联的连接中继承该设置。远程数据服务用法   当用于客户端 (ADOR) Recordset 或 Connection 对象时,只能将 CursorLocation 属性设置为 adUseClient。