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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
Option Compare Database
Option Explicit
Private Sub cmdAjouter_Click()
Dim lngIDPat As Long
Dim strValeur As String
If MsgBox("Ajouter un nouveau patient ?", vbQuestion + vbYesNo, "Ajouter") = vbYes Then
strValeur = InputBox("Quel est le N° du patient concerné ?" & vbCrLf & vbCrLf & "Si c'est un nouveau, entrez 0", "N° requis")
If IsNumeric(strValeur) Then
'Nouveau patient (1ère visite) = 0
'Patient déjà venu > 0
lngIDPat = CLng(strValeur)
Call AjouterPatient(lngIDPat)
Else
MsgBox "N° incorrect !", vbExclamation
End If
End If
End Sub
Public Sub AjouterPatient(ByVal IDPatient As Long)
Dim oRS As DAO.Recordset
Dim SQL As String
Dim lngNumVisite
Dim lngIDPatient As Long
Dim dtmDerniereDate As Date
Dim strDateVisite As String
'Si le patient est déjà venu
If IDPatient Then
'Monte la chaine SQL (requête) pour récupérer les infos
SQL = "SELECT Max(NUMVIS) AS MaxDeNUMVIS, Max(DATEVIS) AS MaxDeDATEVIS FROM Table1 WHERE NUMPAT=" & IDPatient & ";"
'Ouvre un recordset pour lire ces infos
Set oRS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
'Avec ce Recordset
With oRS
If Not .EOF Then
'Si il y a un enregistrement
lngIDPatient = IDPatient
lngNumVisite = .Fields("MaxDeNUMVIS") + 1
dtmDerniereDate = Nz(.Fields("MaxDeDATEVIS").Value, 0)
End If
.Close
End With
Else
'S'il n'y en a pas
'On est obligé d'obtenir un IDPat sauf si IDPat est un AutoIncrément (tu ne l'as pas précisé
SQL = "SELECT Max(NUMPAT) AS MaxIDPAT FROM Table1 ;"
Set oRS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
With oRS
If Not .EOF Then
lngIDPatient = .Fields("MaxIDPAT") + 1
Else
'Sinon , C'est le premier
lngIDPatient = 1
End If
.Close
End With
lngNumVisite = 1
dtmDerniereDate = #1/1/1900#
End If
'On demande la date effective de la visite
On_Recommence:
strDateVisite = InputBox("A quelle date votre patient a t-il passé sa visite ?", "Date de visite")
'Si c'est bien un date
If IsDate(strDateVisite) Then
'Et qu'elle est > à la dernière
If CDate(strDateVisite) >= dtmDerniereDate Then
'Tout va bien...
Else
'sinon, on recommence ou on annule
If MsgBox("La date que vous avez entré est inférieure à la dernière date :" & dtmDerniereDate & vbCrLf & vbCrLf & "Voulez-vous saisir de nouveau une date valide ?", vbQuestion + vbYesNo, "Quelle date") = vbYes Then
GoTo On_Recommence
Else
Exit Sub
End If
End If
Else
'Pas une date
If MsgBox("Ce n'est pas une date !" & vbCrLf & vbCrLf & "Voulez-vous saisir de nouveau une date valide ?", vbQuestion + vbYesNo, "Quelle date") = vbYes Then
GoTo On_Recommence
Else
Exit Sub
End If
End If
'Ajoute un enregsitrement
DoCmd.GoToRecord , , acNewRec
'Affecte les valeurs
Me.NUMPAT = lngIDPatient
Me.NUMVIS = lngNumVisite
Me.DATEVIS = CDate(strDateVisite)
'Sauve l'enregistrement
DoCmd.RunCommand acCmdSaveRecord
MsgBox "C'est OK...", vbInformation
End Sub |
Partager