本帖最后由 sAnKes 于 2009-09-24 15:43:29 编辑

解决方案 »

  1.   

    rs.Open "select * from admin where 编号 ", cn, adOpenKeyset, adLockOptimistic 
    rs.MoveLast这样才能得到记录数,否则可能是 -1。
      

  2.   

    游标的类型要设置好,否则COUNT属性不对,你调试一下看看为什么没有赋值
      

  3.   

     '判断语句如下改一下:        If m <> m_old Then 
                  If m - m_old >= 2 Then 
                     dmin = "LFZ" & Format(CStr(m_old + 1), "0000") 
                     Exit For 
                  End If 
              ElseIf m = m_old Then 
                    dmin = "LFZ" & Format(CStr(m + 1), "0000") 
                    m_old = m              
              End If 
      

  4.   

    chinaboyzyq的测试以后添加第一二条记录没问题,但是添加第三条记录的时候,dmin还是等于LFZ0002
      

  5.   

           If m <> m_old Then 
                  If m - m_old >= 2 Then 
                    dmin = "LFZ" & Format(CStr(m_old + 1), "0000") 
                    Exit For 
                  else
                    '如果m-m_old不大于2呢?

                  End If 
              ElseIf m = m_old Then 
                    dmin = "LFZ" & Format(CStr(m + 1), "0000") 
                    m_old = m              
              End If 
      

  6.   

        rs.CursorLocation = adUseClient ' 这里不懂 
    这个是游标类型-客户游标
      

  7.   

    access有自动编号功能,何必啦。
      

  8.   

    chinaboyzyq,我再重新测试了一下,可总是有很多问题。我想完成的功能是自动赋予连续的编号。
    LFZ0001
    LFZ0002
    LFZ0003

    如果删除了LFZ0002,再添加记录的话,会自动将新添加的记录赋予编号为LFZ0002。请求帮助。
      

  9.   


    Private Sub Command1_Click()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.path + "\data.mdb;Jet OLEDB:Database Password=harry2000"
        cn.CursorLocation = adUseClient
        cn.Open
        
        '注意编号按升序排order by 编号
        rs.Open "select 编号 from admin order by 编号", cn, adOpenKeyset, adLockOptimistic
       
        
        Dim rNum As Long, m As Long, m1 As Long
        Dim flg As Boolean, dmin As String    rNum = rs.RecordCount
        If rNum = 0 Then
            txtNo.Text = "LFZ0001"
        Else
            m = Mid(rs!编号, 4)
            If m <> 1 Then
               txtNo.Text = "LFZ0001"
                Exit Sub
            End If        For i = 1 To rNum - 1
                  m = Mid(rs!编号, 4)
                  rs.MoveNext
                  m1 = Mid(rs!编号, 4)
                  If m1 - m >= 2 Then
                     dmin = "LFZ" & Format(CStr(m + 1), "0000")
                     txtNo.Text = dmin
                     flg = True
                     Exit For
                  End If
            Next i
            
            If Not flg Then
               rs.MoveLast
               m = Mid(rs!编号, 4)
               dmin = "LFZ" & Format(CStr(m + 1), "0000")
               txtNo.Text = dmin
            End If
            
        End IfEnd Sub
      

  10.   

    忘了加关闭数据库的语句:Private Sub Command1_Click()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.path + "\data.mdb;Jet OLEDB:Database Password=harry2000"
        cn.CursorLocation = adUseClient
        cn.Open
        
        '注意编号按升序排order by 编号
        rs.Open "select 编号 from admin order by 编号", cn, adOpenKeyset, adLockOptimistic
          
        Dim rNum As Long, m As Long, m1 As Long
        Dim flg As Boolean, dmin As String    rNum = rs.RecordCount
        If rNum = 0 Then
            txtNo.Text = "LFZ0001"
        Else
            m = Mid(rs!编号, 4)
            If m <> 1 Then
               txtNo.Text = "LFZ0001"
                rs.Close'''
                cn.Close'''
                Exit Sub
            End If        For i = 1 To rNum - 1
                  m = Mid(rs!编号, 4)
                  rs.MoveNext
                  m1 = Mid(rs!编号, 4)
                  If m1 - m >= 2 Then
                     dmin = "LFZ" & Format(CStr(m + 1), "0000")
                     txtNo.Text = dmin
                     flg = True
                     Exit For
                  End If
            Next i
            
            If Not flg Then
               rs.MoveLast
               m = Mid(rs!编号, 4)
               dmin = "LFZ" & Format(CStr(m + 1), "0000")
               txtNo.Text = dmin
            End If       
        End If
        rs.Close'''
        cn.Close'''
    End Sub
      

  11.   

    chinaboyzyq我实在无法怎么去表达这种激动,chinaboyzyq,我....实在太爱你了。这个问题我想了整整一天,连吃饭都在想,一直理解不过来为什么原来的代码是错的。实在太感谢你了,太感谢你了。初学VB不久。感谢你的帮助。真的非常感谢,非常感谢。激动啊!~~~~激动。