Public Function getLastCode(letter As String) As String
    Dim rs As New ADODB.Recordset
    Dim sqlstr As String
        rs.CursorLocation = adUseClient 
    rs.CursorType = adOpenStatic 
    'sqlstr = "select top 1 * from equipment where code like '" & letter & "#####' order by code desc" 
    sqlstr = "select top 1 * from equipment where code like '" & letter & "*' order by code desc"
    Set rs = cn.Execute(sqlstr)
    
    If rs.RecordCount > 0 Then
        getLastCode = rs(0).Value
    Else
        getLastCode = letter & "000000"
    End If
End Function本人刚一直研究C#,刚接触VB 对ADODB还不熟悉,
ask:上述代码,为何rs.RecordCount 始终为0,请达人指教

解决方案 »

  1.   

    ACCESS数据库,VB中查询like语句中的“*”要改为"%"号
    sqlstr = "select top 1 * from equipment where code like '"& letter &"%' order by code desc" 
      

  2.   

    http://topic.csdn.net/u/20071206/12/24be2e04-1772-4148-8f67-ec6f91845d46.html
      

  3.   

    sqlstr = "select top 1 * from equipment where code like '"& letter &"%' order by code desc
    sqlstr = "select top 1 * from equipment where code like '"& letter &"*' order by code desc我在ACCESS数据库中运行过,是可以查询到记录的·通用。 
    SQL语句无任何问题
      

  4.   

    Sorry,我发错了,没仔细看,原来是like语法的问题。算我没说:)
      

  5.   

    rs.CursorType   =   adOpenStatic 是对的
    但是数据库连接cn 类型是否设置正确?
      

  6.   

     Set cn = New ADODB.Connection
        cn.CursorLocation = adUseClient
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\E0508.mdb;Persist Security Info=False;Jet OLEDB:Database Password=hwrj"
        cn.Open
    cn的设置代码。。
      

  7.   


            If rs.EOF Then 
                getLastCode = letter & "000000"
            Else 
                getLastCode = rs(0).Value 
            End If
     
      

  8.   

    RecordCount是0还是-1?RecordCount的值  是0  是不-1 
    -1 是因为游标设置问题,这个我知道
      

  9.   

    或  'Set rs = cn.Execute(sqlstr) 
      rs.Open sqlstr, cn
      

  10.   

    If rs.EOF Then 
                getLastCode = letter & "000000"
            Else 
                getLastCode = rs(0).Value 
            End If
    用了这代码,但程序判断始终是EOF 无论数据库是否有记录。。
      

  11.   

    0是没有数据返回,是你SQL语法错误,在ACCESS环境中用通配符用*,VB中是通过jet引擎执行SQL语句,JET引擎只支持%通配符
      

  12.   

    1.  rs.CursorLocation   =   adUseClient 
    2.  vb的sql语句通配符是 %和_
      

  13.   

    是0的话,肯定是SQL语句的问题,就按上面说的把*改成%试一下就好了
      

  14.   

    rs.CursorLocation       =       adUseClient 
    把游标类型改成客户端的,就可以了