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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Private Sub Lst_Ville_AfterUpdate()
' Rechercher l'enregistrement correspondant au contrôle.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Id] = " & str(Nz(Me![Lst_Ville], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub Lst_Ville_NotInList(NewData As String, Response As Integer)
On Error GoTo Err
Dim oId As Long
'Message pour ajouter la ville
If MsgBox("Souhaitez-vous ajouter cette nouvelle ville ?", _
vbYesNo + vbQuestion + vbDefaultButton2, "Ajout d'un nouvelle ville") = vbYes Then
'Ajoute le nom de la nouvelle ville
DoCmd.RunSQL "INSERT INTO Tbl_Ville ( Ville ) SELECT """ & NewData & """;"
'Zappe le message d'erreur système
Response = acDataErrAdded
'Récupère la clé primaire de la dernière valeur ajoutée dans la table
oId = DLast("Id", "Tbl_Ville")
'Si on clique sur Annuler dans la boite de dialogue de saisie du code postal
If AdCodePostal(oId) = False Then
GoTo On_Annule
End If
Else
On_Annule:
Response = acDataErrContinue
Me.Lst_Ville.Undo
Exit Sub
End If
'On est obligé de remetre cette ligne de code pour actualiser la liste avec le code postal
Response = acDataErrAdded
Fin: Exit Sub
Err:
MsgBox "Erreur n° : " & Err.Number & vbLf & "Description : " & Err.Description
Resume Fin
End Sub
Private Function AdCodePostal(Id As Long) As Boolean
Dim sInput As String
On_Relance:
'Ouverture de la boite de dialogue pour saisir le code postal
sInput = InputBox("Saisir le code postal :", "Code postal")
If StrPtr(sInput) = 0 Then 'Si on appuie sur Annuler
MsgBox "Opération annulée." & vbLf & "La ville saisie précédement va être supprimée.", vbOKOnly, "Information"
'Suppression de la ville
DoCmd.RunSQL "DELETE * FROM Tbl_Ville WHERE (((Tbl_Ville.Id)=" & Id & "));"
'Annule la saisie dans le champ de la liste
AdCodePostal = False
ElseIf Not IsNumeric(sInput) Then
MsgBox "Le code postal doit être numérique.", vbOKOnly + vbCritical, "Information"
GoTo On_Relance 'On relance la boite de dialogue
ElseIf Len(sInput) <> 5 Then
MsgBox "Le code postal doit avoir 5 chiffres.", vbOKOnly + vbCritical, "Information"
GoTo On_Relance 'On relance la boite de dialogue
Else
'Met à jour le code postal de la ville saisie précédement
DoCmd.RunSQL "UPDATE Tbl_Ville SET Tbl_Ville.CP = " & sInput & " WHERE (((Tbl_Ville.Id)= " & Id & "));"
End If
End Function |
Partager