Bonjour,
J'ai un requête qui ajoute un enregistrement via DAO. Je souhaite après récupérer l'identifiant automatique le plus grand. J'ai une fonction GetMaxIdContact pour ca. Cependant il se peut que entre la requête d'insertion et la récupération de l'id maximum un autre enregistrement s'insère et dans ce cas ma fonction GetMaxIdContact ne me renvoi pas le bon identifiant.
Peut on avec les transactions empêcher l'insertion de données pendant ce laps de temps.
Voic mon code:
Merci d'avance
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Private Sub enregistrerContact() Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("SELECT * FROM contacts") rst.AddNew rst!titre_contact = titre_contact.Value rst!nom_contact = nom_contact.Value rst!prenom_contact = prenom_contact.Value rst!fonction_contact = fonction_contact.Value If (dateDeNaissance_contact.Value = "") Then rst!dateDeNaissance_contact = Null Else st!dateDeNaissance_contact = dateDeNaissance_contact End If rst!email_contact = email_contact.Value rst!tel_contact = tel_contact.Value rst!portable_contact = portable_contact.Value rst!fax_contact = fax_contact.Value rst!hobbies_contact = hobbies_contact.Value rst!note_contact = note_contact.Value rst.Update creerRelationClientContact End Sub Private Sub creerRelationClientContact() Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("SELECT * FROM clients_contacts") rst.AddNew rst!id_client = Form_client.id_client.Value rst!id_contact = getMaxidContact rst.Update End Sub Private Function getMaxidContact() As Integer Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("SELECT Max(id_contact) As maxIdContact FROM clients_contacts") getMaxidContact = rst!maxIdContact End Function
Partager