ACHAR PROXIMO CODIGO DISPONIVEL PARA CADASTRO
Olá amigos !
Tem como achar o próximo código disponÃvel para ser usado no cadastro no campo [Ô]código do produto[Ô] por exemplo. O que acontece é que meu cadastro está com vários códigos sortidos como 1, 5, 10, 18, 36, etc... gostaria nesse caso que o sistema reconheça o próximo disponÃvel os ainda não usados.
Tem como achar o próximo código disponÃvel para ser usado no cadastro no campo [Ô]código do produto[Ô] por exemplo. O que acontece é que meu cadastro está com vários códigos sortidos como 1, 5, 10, 18, 36, etc... gostaria nesse caso que o sistema reconheça o próximo disponÃvel os ainda não usados.
Essa coisa de campo vago é uma tristeza!!
Tente isso:
Dim Cont As Integer
Cont = 1
Set NumeroVago = Banco4.Execute([Ô]SELECT max(Val(ID)) AS MaiorValor FROM Tabela [Ô])
With NumeroVago
If .EOF = True And .BOF = True Then
Cont = [Ô]1[Ô]
Else
.MoveLast
Cont = Val(.Fields([Ô]MaiorValor[Ô])) + 1
End If
Codigo = Cont
MsgBox Codigo
If Not (NumeroVago Is Nothing) Then .Close: Set NumeroVago = Nothing
End With
Tente isso:
Dim Cont As Integer
Cont = 1
Set NumeroVago = Banco4.Execute([Ô]SELECT max(Val(ID)) AS MaiorValor FROM Tabela [Ô])
With NumeroVago
If .EOF = True And .BOF = True Then
Cont = [Ô]1[Ô]
Else
.MoveLast
Cont = Val(.Fields([Ô]MaiorValor[Ô])) + 1
End If
Codigo = Cont
MsgBox Codigo
If Not (NumeroVago Is Nothing) Then .Close: Set NumeroVago = Nothing
End With
Um mais simples
sSQL = [Ô]SELECT MAX(Codigo) as Tot From Tabela[Ô]
Set rs = Banco.Execute(sSQL)
If Not IsNull(rs!Tot) Then
Text1.Text = Val(rs!Tot + 1) [ô]Vai aparecer adicionado mais 1 do próximo registro
Text1.Text = Val(rs!Tot ) [ô]Vai aparecer o último resgistro
end if
Valeu.
sSQL = [Ô]SELECT MAX(Codigo) as Tot From Tabela[Ô]
Set rs = Banco.Execute(sSQL)
If Not IsNull(rs!Tot) Then
Text1.Text = Val(rs!Tot + 1) [ô]Vai aparecer adicionado mais 1 do próximo registro
Text1.Text = Val(rs!Tot ) [ô]Vai aparecer o último resgistro
end if
Valeu.
Olá amigos !
Pelas rotinas passadas pelos amigos estou entendendo que o sistema acha o último código cadastrado e acrescenta + 1 para achar o código atual. O que exatamente preciso é achar o primeiro código ainda não usado para que eu possa aproveitar. Ex: tenho cadastrado clientes com códigos 1,3,4,5 ...neste exemplo não tenho o cliente 2 cadastrado, gostaria de achar o primeiro código não usado para aproveitá-lo.
Pelas rotinas passadas pelos amigos estou entendendo que o sistema acha o último código cadastrado e acrescenta + 1 para achar o código atual. O que exatamente preciso é achar o primeiro código ainda não usado para que eu possa aproveitar. Ex: tenho cadastrado clientes com códigos 1,3,4,5 ...neste exemplo não tenho o cliente 2 cadastrado, gostaria de achar o primeiro código não usado para aproveitá-lo.
Faça assim:
Para chamar a função é só fazer assim
Public Function CodigoCadastro() As Long
Dim i As Long
Dim cod As Long
Dim codAux As Long
Dim rst As New ADODB.RecordSet
rst.Open [Ô]SELECT CodigoID FROM tbClientes Order By CodigoID ASC[Ô], SuaConexao, adOpenDynamic, adLockOptimistic
If rst.RecordCount > 0 Then
cod = 0
For i = 1 To rst.RecordCount
codAux = CLng(rst([Ô]CodigoID[Ô]))
If cod < codAux AND (cod + 1) <> codAux Then
cod = cod + 1
Exit For
Else
cod = codAux
End If
rst.MoveNext
Next i
If cod = codAux Then cod = cod + 1
Else
cod = 1
End If
CodigoCadastro = cod
End Function
Para chamar a função é só fazer assim
Dim Codigo As Long
Codigo = CodigoCadastro
Tópico encerrado , respostas não são mais permitidas