jleites Posted April 25, 2013 at 10:08 AM Report #504761 Posted April 25, 2013 at 10:08 AM boas estou a desenvolver um projeto em visual basic com ligação a uma base de dados de access e o problema é que quando apago um registo um novo que va criar nao ocupa o "id" daquele por exemplo: crio os seguintes registos(id nome idade): 1 ze 22 2 manuel 35 3 joaquim 21 4 rui 19 5 pedro 35 apago um deles(fica assim): 1 ze 22 3 joaquim 21 4 rui 19 5 pedro 35 ao adicionar um novo fica assim: 1 ze 22 3 joaquim 21 4 rui 19 5 pedro 35 6 luis 27 e eu queria que ele tomasse o id mais "pequeno", ou seja que ficasse assim: 1 ze 22 2 luis 27 3 joaquim 21 4 rui 19 5 pedro 35
vikcch Posted April 25, 2013 at 11:40 PM Report #504864 Posted April 25, 2013 at 11:40 PM Olá, A maneira correcta de fazer é assim mesmo, imagine que tens as tabelas relacionadas, e que foi feita uma venda para o cliente com o ID 2, depois vc remove o ID 2 e adiciona um novo cliente com ID 2, tá a ver o problema que irá dar... Porém se quiseres fazer mesmo como disseste, o ID (chave primaria) não pode ser auto-increment, em access acho que é autonumber, tem que ser long. Depois quanto inseres um novo registo, tens que fazer um ciclo para saber qual o primeiro numero disponível de uma sequência. Penso não existir nada "automático" que faça isso, tens de passar todos os ID's para um array. code em VB6: Option Explicit Dim MyArr() As Variant Private Sub Command1_Click() Dim i As Integer, iUltimoDaSeq As Integer, iInserir As Integer 'Ver Qual Numero a Inserir iInserir = 1 If (Not MyArr) = -1 Then Debug.Print "O Array não foi inicializado" Else For i = LBound(MyArr) To UBound(MyArr) iUltimoDaSeq = iUltimoDaSeq + 1 If MyArr(i) = iUltimoDaSeq Then iInserir = MyArr(i) + 1 Else Exit For Next 'i End If MsgBox "Numero a inserir: " & iInserir 'Adicionar novo numero ao Array Dim iTamanhoArray As Integer, iCont As Integer, i2 As Integer If (Not MyArr) = -1 Then iTamanhoArray = 0 Else iTamanhoArray = UBound(MyArr) + 1 ReDim Preserve MyArr(iTamanhoArray) As Variant MyArr(iTamanhoArray) = iInserir For i = LBound(MyArr) To UBound(MyArr) - 1 iCont = iCont + 1 If iCont = iInserir Then For i2 = UBound(MyArr) To i + 1 Step -1 MyArr(i2) = MyArr(i2 - 1) Next 'i MyArr(i) = iInserir Exit For End If Next 'i 'Listar conteudo do Array Debug.Print ".:Conteudo do Array:." For i = LBound(MyArr) To UBound(MyArr) Debug.Print "Index: " & i & " Valor: " & MyArr(i) 'MsgBox "Index: " & i & " Valor: " & MyArr(i) Next 'i End Sub Private Sub Form_Load() Dim i As Integer MyArr = Array(1, 3, 4, 5) For i = LBound(MyArr) To UBound(MyArr) MsgBox "Index: " & i & " Valor: " & MyArr(i) Next 'i End Sub A parte de Adicionar novo numero ao Array, não é necessária, foi só para completar este exemplo, apenas o que te interessa é saber Qual Numero a Inserir, não te esqueças que tens que passar todos os ID's para um array antes de fazeres isto. Espero ter ajudado,
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now