Bonjour, j'essaye d'appliquer le code trouvé dans la FAQ "Comment supprimer les trous des champs NuméroAuto ?" sur ma table "MoyensH" et mon champ "N" :
Comme certains dont j'ai lu le post, j'ai un problème d'application. J'essaye de lancer la fonction à partir d'un bouton qui me permet d'enregistrer la mise à jour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Function NextID(N As String, MoyensH As String) As Long Dim sSQL As String Dim rs As DAO.Recordset Dim NumN As Long 'Chaîne SQL en fonction de LeChamp et de LaTable, retournant NULL ou le numéro du trou sSQL = "Select Min([" & N & "]-1) As NextID From " & MoyensH & " As T1 " sSQL = sSQL & "Where ((([" & N & "]-1)>0) And (((Select [" & N & "] " sSQL = sSQL & "From " & MoyensH & " T2 " sSQL = sSQL & "Where T2.[" & N & "]=T1.[" & N & "]-1)) Is Null));" Set rs = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot) 'Nbre d'enregistrements dans laTable NumN = DCount("[" & N & "]", "[" & MoyensH & "]") If NumN = 0 Then 'S'il n'y a pas d'enregistrements, mettre 1 NextID = 1 ElseIf IsNull(rs(0)) Then 'Si la requête ne renvoie rien, incrémenter de 1 le maximum NextID = DMax("[" & N & "]", "[" & MoyensH & "]") + 1 Else NextID = rs(0) 'Sinon, il y a un trou. Renvoyer la valeur du trou End If End Function
mais un message m'indique "Argument non facultatif". Je comprends donc qu'il lui faut des arguments, j'ai essayer de mettre NextID(N, MoyensH), etc ... mais ça bloque toujours. De plus il est indiqué qu'il faut activer Microsoft DAO 3.x Object Library, mais quand je vérifie il n'est pas coché, et lorsque je le coche ça m'indique "nom de module déjà utilisé" ... Une ptite piste siouplait ? Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub bNew_Click() DoCmd.GoToRecord , , acNewRec NextID End Sub
Partager