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
| Private Sub Form_BeforeInsert(Cancel As Integer)
Dim sSQL As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
sSQL = "SELECT TOP 1 tEVA.evaris, tEVA.evadat, tEVA.evafin " & _
"FROM tEVA " & _
"WHERE tEVA.evaris = " & Me.evaris & " ORDER BY tEVA.evadat DESC;"
Set rst = db.OpenRecordset(sSQL, dbOpenDynaset)
If rst.EOF Then
' Pas d'enregistrement, on peut créer un nouvel enregistrement
If DCount("*", "tEVA") = 0 Then ' s'il n'existe pas d'enregistrement dans la table (calcul de ID)
Me.evaid = (utr * 10000000) + 1
Else ' s'il en existe (calcul de ID)
Me.evaid = (utr * 10000000) + CLng(Right(DMax("evaid", "tEVA"), 7)) + 1
End If
Else
If IsNull(rst!evafin) Or rst!evafin = "" Then
' La date du dernier enregistrement est vide, on ne crée pas : on sort !
MsgBox "La création d'une nouvelle évaluation ne sera possible que " & vbNewLine & _
"lorsque les nouvelles mesures de prévention auront été mises " & vbNewLine & _
"en oeuvre. ", vbExclamation + vbOKOnly, "Création impossible"
Cancel = True
DoCmd.GoToRecord , , acLast
GoTo sortie
Else
' La date du dernier enregistrement est remplie, on crée."
Me.evaid = (utr * 10000000) + CLng(Right(DMax("evaid", "tEVA"), 7)) + 1
End If
End If
sortie:
rst.Close: db.Close: Set rst = Nothing: Set db = Nothing
End Sub |
Partager