.....
 Dim Rs1 As New ADODB.Recordset 
 sYmd 为日期字符串,例如"2004-05-02"
 cFindStr = "Ymd=#" & sYmd & "# And Id=" & mIdex(II)
  Rs1.MoveFirst
  Rs1.Find cFindStr'运行至此报错
.....
报错:
实时错误‘3001’:
参数类型不正确,或不在可以接受的范围内,或与其他参数冲突。
高手指点。

解决方案 »

  1.   

    cFindStr = "Ymd=DateValue('" & sYmd & "') And Id=" & mIdex(II)注意:如果 mIdex(II) 是字符型,则需要加单引号
      

  2.   

    另外,cFindStr最好明确声明为字符类型,即 Dim cFindStr as string
      

  3.   

    TO:  SunWinter(冬日阳光下的一头猪)
    俺声明了Dim cFindStr as string
    Ymd为日期类型,Id加单引号试了还是报上述错误,还有其他方法吗。
      

  4.   

    很奇怪,若将查询条件按下面分解"Ymd=#" & sYmd & "# And Id=" & 
    mIdex(II)便能顺利执行(结果有可能不正确),  
    cFindStr = "Ymd=#" & sYmd & "#"
      Rs1.MoveFirst
      Rs1.Find cFindStr
      If Rs1.AbsolutePosition > 0 And Not Rs1.EOF Then
        Rs1.Find "Id=" & mIdex(II)
    .....
    是否Find不支持多条件查询,高手指点。
      

  5.   

    hewei2003:
    有其他方法实现上述查询吗?
      

  6.   

    rs.Open "select table1.eid,table1.etype,table1.econtent from table1,(select eid,etype,econtent from table1 where econtent like '%" & text1.text & "%' ) a,(select eid,etype,econtent from table1 where econtent like '%" & text2.text & "%') b Where table1.eid = a.eid And table1.eid = b.eid and edate>='"& text3.text &"' and edate<='" & text4.text & "'" and table1.eid=" & mIdex(II)
    , mConn, 1, 3这是一个多表,多条件的,通过测试
      

  7.   

    用select * from tablename where ...(這樣查詢)
      

  8.   

    楼上的,怎样执行“select * from tablename where ...(這樣查詢)”,
    是用Conn.Execute还是rs.Open “...”?请指教。
      

  9.   

    不推荐使用ADO的方法,包括DELETE,FIND……
    原因是效率不高,因为其内部也是先根据用户设置的条件转换为SQL语句再执行,所以还是推荐直接使用SQL语句来执行查询!!
    方法:rs.open "SELECT * FROM TABLENAME WHERE NAME = '" & TEXTNAME.TEXT & "'",CN
      

  10.   

    没有返回结果的SQL语句,包括UPDATE,DELETE,DROP TABLE,CREATE TABLE……之类的SQL语句可以用CN.EXECUTE STRSQL来执行!!
      

  11.   

    UseMdb = "Data Source=" & MdbName    
    UseConnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & UseMdb
    Conn.Open UseConnstrRs1.CursorLocation = adUseClient
    UseTable1 = cTable                '&Ecirc;&yacute;&frac34;&Yacute;±í
    Rs1.Open UseTable1, Conn, adOpenKeyset, adLockPessimistic
    Rs1.MoveFirst
    For II = 1 To AllIndex
      Rs1.Open "Select * from " & cTable & "where Ymd=#" & sYmd _
             & "# And Id=" & mIdex(II)
      sName(II) = Trim(rs1.Fields("name").Value)
    Next
    楼上的,这样执行提示错误:
    对象打开时,不允许操作。
    是不是不用事先建立连接,直接定义:
    Dim Conn As New ADODB.Connection
    Dim Rs1 As New ADODB.Recordset即可。
      

  12.   

    Dim Conn As ADODB.Connection
    Dim Rs1 As ADODB.Recordsetset conn=new adodb.connenction
    set rs1=new adodb.recordset
    UseMdb = "Data Source=" & MdbName    
    UseConnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & UseMdb
    Conn.Open UseConnstrRs1.CursorLocation = adUseClient
    For II = 1 To AllIndex
      Rs1.Open "Select * from " & cTable & "where Ymd=#" & sYmd _
             & "# And Id=" & mIdex(II)
      sName(II) = Trim(rs1.Fields("name").Value)
    Next
      

  13.   

    For II = 1 To AllIndex
      Rs1.Open "Select * from " & cTable & "where Ymd=#" & sYmd _
             & "# And Id=" & mIdex(II)'运行此处提示:连接无法用于此
    操作。在上下文中他可能已被关闭或无效。楼上的再看一看,是啥原因?  sName(II) = Trim(rs1.Fields("name").Value)
    Next
      

  14.   

    楼上几位高手都说得对呀!我感觉还直接执行SQL语句比较好,比如:
    dim cn as adodb.connection
    dim rs as adodb.recordset
    set cn=new adodb.connection
    set rs=new adodb.recordsetrs.open SQL语句,...........
    rs.execute SQL语句
      

  15.   

    谢谢各位,俺为了赶进度用 Rs1.Find "Ymd=#" & sYmd & "#"后再逐行
    判断id号取值(幸好数据行只有几千行),有空再实施各位提供的方法。