Set rs = db.Execute("select * from XXX.EXCHANGE_RATE where EXTRACT_DATE=#20020520#")

解决方案 »

  1.   

    db.CursorLocation = adUserClient
      

  2.   

    Set rs = db.Execute("select * from XXX.EXCHANGE_RATE where EXTRACT_DATE='20020520'")改成rs.open "select .....",db,3,1
      

  3.   

    打开记录集得方式不对,按 joan_lu(joan) (  ) 说得试试~
      

  4.   

    打开记录集得方式不对,按 joan_lu(joan) (  ) 说得试试~
      

  5.   

    你是在数据库方面出现了问题,试试下面的函数,调用一下吧
    Public Function dbConnect() As Integer
            
        Set dbConnection = New Connection
        With dbConnection
            .CursorLocation = adUseClient
            .Provider = "SQLOLEDB;"
            .ConnectionString = "uid=...;dsn=...;pwd=...;database=.."
            .Open
        End With
    end Function
    Public Function RecordSetOpen(strQuery As String) As Recordset
        
        Set RecordSetOpen = New Recordset
        With RecordSetOpen
            .CursorType = adOpenDynamic
            .LockType = adLockOptimistic
            .ActiveConnection = dbConnection
            .PageSize = 50
            .CursorLocation = adUseClient
            .Open strQuery
        End With
        Exit Function
        Exit Function
      

  6.   

    我不是说了嘛,你的记录集打开方式有问题:
    Dim db As ADODB.Connection
    Dim rs As ADODB.RecordsetSet db = New ADODB.Connection
    Set rs = New ADODB.Recordsetdb.ConnectionString = "provider=ibmdadb2;dsn=...;uid=dwuser;pwd=dwuser;database=..."
    db.Open
                                        
    db.CursorLocation = adUserClient
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Set rs = db.Execute("select * from XXX.EXCHANGE_RATE where EXTRACT_DATE='20020520'")rs.MoveLastDim max As Integer
    max = rs.RecordCount                           
     
    Text1.Text = max
    Text2.Text = rs.Fields("CRTYPE")rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
      

  7.   

    我觉得不是记录集打开方式的问题,记录集已经打开。
    因为令
       Text2.Text = rs.Fields("CRTYPE")
    有显示第一条记录正确字段值。
    难道打开的记录集是循环链表,指针指在...也不对啊
      

  8.   

    我又注意到了一点,是你的问题所在
    sql语句错误
       Set rs = db.Execute("select * from XXX.EXCHANGE_RATE where EXTRACT_DATE='20020520'")
    XXX.EXCHANGE_RATE 应是表名XXX而不是字段
    满意了吧!
      

  9.   

    谢谢寒星和小溪,星:我开始就试过,不行,说“变量或类型不正确,或者不在可以接受的范围内...”溪:XXX.EXCHANGE_RATE 确实是IBM DB2 数据库中的表名
      

  10.   

    使用joan的方法,同样提示“行集不支持反向取”天啊!难道没有高手了吗?
      

  11.   

    To ybw2001(血仍未冷):
      嗯?“变量或类型不正确,或者不在可以接受的范围内...”发生在哪一行?
      

  12.   

    就是加的那一行。难道是因为“用EXECUTE返回的RECORDSET是只读的,并且是仅向前光标。如果你需要用RECORDSET物件的更多函数,你首先要创建RECORDSET物件并设置想要设置的属性然后用OPEN方法打开它来执行查询和返回想要得到的光标类型.?
      

  13.   

    我终于找到原因了,我刚才在vb中调试了,vb中的游标支持反向提取记录集,但必须设db.CursorLocation = adUseClient这样就可以了,我刚才试了
    就是这的毛病。代码如下: Private Sub Form_Load()
        Dim db As Connection
        Dim rs As Recordset
      
        Set db = New ADODB.Connection
        Set rs = New ADODB.Recordset
        
         With db
            .CursorLocation = adUseClient
            .Provider = "SQLOLEDB;"
            .ConnectionString = "User ID=sa;Data Source = citsql;Initial Catalog = pmpdb"
            .Open
         End With
         Set rs = db.Execute("select * from jobs")    rs.MoveLast
        MsgBox rs.RecordCount
        
        rs.Close
        Set rs = Nothing
        db.Close
        Set db = NothingEnd Sub
      

  14.   

    Thank you,thank you!   :)果然搞定.(脸上写满泪水的问:)朋友哪里人寒兄说的也对,不过语句
    db.CursorLocation  =  adUserClient 
      的位置不太正确,应该在打开数据库之前定义属性。

    db.ConnectionString  =    "provider=ibmdadb2;dsn=...;uid=dwuser;pwd=dwuser;database=...  "  
                                                                             
    db.CursorLocation  =  adUserClient  
    db.Open 
    不过,同样感谢,有分相送。呵呵
      

  15.   

    To ybw2001(血仍未冷):
      呵呵,笔误,笔误。