我试图用command来打开记录写来如下语句:
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.CommandDim cnnstr As String
cnnstr = "f:\mybase.mdb"
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & cnnstr
cmd.ActiveConnection = cnn
Dim mysql As String
mysql = "select * from 表1"
cmd.CommandText = mysqlSet rs = cmd.ExecuteSet DataGrid1.DataSource = rs
可执行是出错,光标在最后一句。
错误提示为:
7004 行集合不能做为标签。
请问如何修改。

解决方案 »

  1.   

    Cnn.CursorLocation = adUseClientcnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & cnnstr
      

  2.   

    Cnn.CursorLocation = adUseClientcnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & cnnstr
      

  3.   

    或者:
    rs.CursorLocation = adUseClient
    Set rs = cmd.Execute
      

  4.   

    我也遇到同样问题,设置rs.CursorLocation = adUseClient同样出现行集合不能作标签,
    请各位大师指点迷津,感激
      

  5.   

    rs.CursorLocation = adUseClient
    cmd.ActiveConnection = con
    cmd.CommandText = "select * from 表1"
    rs.Open cmd, , adOpenKeyset, adLockPessimistic
    Set DataGrid1.DataSource = rs
      

  6.   

    我就是不想用RS.open,想学习command,才用command来打开,要用RS.open 就不用这么费力定义command的了。
      

  7.   

    cnn.CursorLocation = adUseClient可以,我调试过了
    xzy88888(志志),你试一下,我解决了。
      

  8.   

    CursorLocation = adUseClient不行,调试不过,xzy88888(志志),你行吗?
    有哪位高手说一下,cnn.CursorLocation = adUseClient,
    rs.CursorLocation = adUseClient,它们的不同主要在哪呢?
      

  9.   

    主要就在一个是cnn(连接),一个是rs(记录集)。好象是废话!
      

  10.   

    主要就在一个是cnn(连接),一个是rs(记录集)。好象是废话!
      

  11.   

    我也遇过同样的问题.好像用cmd返回记录集时,rs.CursorLocation=cnn.cursorlocation.
    所以在这时候只能设cnn的cursorlocation,不信的话你断点跟踪一下.
    在Set rs = cmd.Execute之后,rs.CursorLocation就已经等于cnn.cursorlocation了.
      

  12.   

    asza2001(大海),你好,还是出现行集不能作标签,各位大师,帮帮我吧,我快疯了
    VB调用代码 
      Dim rs As New ADODB.Recordset
      Dim cmd As New ADODB.Command
      Dim param As New ADODB.Parameter
      Dim ss As String
      ss = "Provider=SQLOLEDB.1;Persist Security Info=False;UserID=sa;Initial         Catalog=sub;Data Source=changxunnt02"
      Set rs = New ADODB.Recordset
      Set cmd = New Command
      rs.CursorLocation = adUseClient
      rs.CursorType = adOpenStatic
      rs.LockType = adLockOptimistic
       With cmd
            .ActiveConnection = ss
            .CommandText = "FIND_HISTORY"
            .CommandType = adCmdStoredProc
       End With
      Set param = cmd.CreateParameter("@partno", adVarChar, adParamInput, 50, Combo1.Text)
      cmd.Parameters.Append param
     Set rs = cmd.Execute
     Debug.Print rs.RecordCount
     Set DataGrid1.DataSource = rs ??最后一句行记录不能作标签???????到底是SQL过程没返回行记录还是VB代码有
    错误了,SQL存储过程在ANALYSL中执行没有问题,各位大师,救救我吧??????
     SQL存储过程为
       CREATE PROCEDURE [FIND_HISTORY] 
     @partno varchar(50)
    AS
     declare @ss varchar(1200)
     set @ss='SELECT partno,datetime FROM HISTORY where partno='''+@partno+''''
     exec(@ss)
    GO 
      

  13.   

    我是用ACCESS,但SQL应是一样的。我的代码如下。你可以参考。
    Dim cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cmd As New ADODB.CommandDim cnnstr As String
    cnnstr = "f:\mybase.mdb"
    cnn.CursorLocation = adUseClient
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & cnnstr
    cmd.ActiveConnection = cnn
    Dim mysql As String
    mysql = "select * from 表1"
    cmd.CommandText = mysql
    Set rs = cmd.ExecuteSet DataGrid1.DataSource = rs
      

  14.   

    xzy88888(沙漠中孤独的狼) 
    你的代码好象是少了 cnn.open
      

  15.   

    asza2001(大海) 调试通过了,一个是要定义cnn.CursorLocation = adUseClient,另外
    要定义连接,CONN01主要是这两个方面,谢谢你
      

  16.   

    你说的对,是的,我没有OPEN,只定义了一个字符串,另外,没有定义Conn01.CursorLocation = adUseClient,conn01.oepn “ss“,你很仔细,再次表示感谢
      

  17.   

    rs.CursorLocation = adUseClient
    cmd.ActiveConnection = con
    cmd.CommandText = "select * from 表1"
    rs.Open cmd, , adOpenKeyset, adLockPessimistic
    Set DataGrid1.DataSource = rs