我用cnn.CursorLocation = adUseClient
      rs.CursorLocation = adUseClient
      rs.CursorType = adOpenStatic
      rs.LockType = adLockBatchOptimistic
  
      Set rs = cnn.Execute("exec Proc_GetSequenceForShow")  
      MsgBox rs.RecordCount调存储过程的,那个存储过程在查询分析器里是好好的,也把网上的set nocount on,set nocount off加上了,
可是运行的时候返回的recordCount就是0,可是每次我设断点进去调的时候又正常了,我什么都没改呀难道VB要人看着他运行??????????晕呀,有没有人遇到 呀

解决方案 »

  1.   

    adLockBatchOptimistic 换掉 
    adLockOptimistic  或者  adLockReadOnly
      
      

  2.   

    adLockBatchOptimistic 换掉 
    adLockOptimistic  或者  adLockReadOnly未经证实——没有这proc。
      
      

  3.   

    应该是你的过程 GetSequenceForShow  有什么问题,  Dim cnn As ADODB.Connection, rs As Recordset  set cnn=new ADODB.Connection
      cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=."
      cnn.CursorLocation = adUseClient
      cnn.Open
      Set rs = New ADODB.Recordset
      rs.CursorLocation = adUseClient
      rs.CursorType = adOpenStatic
      rs.LockType = adLockBatchOptimistic  Set rs = cnn.Execute("exec reptq1")
      MsgBox rs.RecordCount结果是 5 
      
      

  4.   

    你用查询分析器调试过你的存储过程了没有?
    怀疑是Stored procedure有潜在问题
    贴出你的过程代码?
      

  5.   


    这个是存储过程,在查询分析器里我运行是好好的,而且只返回一个表
    ALTER proc Proc_GetSequenceForShow
    as
    begin
    set nocount on
    declare @iTotalRecordCount as int
     select  @iTotalRecordCount= count(*) from dbo.CategorySalesFact
    select sequenceID  ,dbo.GetSequenceForShow(sequenceID) [Sequence] ,max(Support)  SupportNum,
           cast(cast(max(Support) as numeric(8,4))/@iTotalRecordCount as numeric(8,8)) Supportfrom dbo.SequencePatterns a inner join dbo.Item b
    on a.Item = b.id
    group by a.SequenceId
    order by supportNum desc
    set nocount offend