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 99 100 101 102 103 104 105 106 107
| Private Sub cmdValider_click()
Dim erreur, Societe, NomInterlocuteur, PrenomInterlocuteur, Adresse, Ville, Pays, Mail, sql As String
Dim Portable, Fixe, Fax, CP As Integer
Dim ID_Fournisseur As Integer
Dim oRst As DAO.Recordset
Dim odb As DAO.Database
'Test si des champs sont null : si oui message d'erreur et arrrét
If IsNull(Me.txtNomSociéte) Or IsNull(Me.txtNomInterlocuteur) Or IsNull(Me.txtPrenomInterlocuteur) Or IsNull(Me.txtAdresse) Or IsNull(Me.txtCP) Or IsNull(Me.txtVille) Or IsNull(Me.txtTélFixe) Then
MsgBox ("Merci de Remplir les champs Obligatoires")
Exit Sub
End If
'Test si le téléphone fixe est bien une suite de nombre : si non message d'erreur et arrrét
If Not IsNumeric(Me.txtTélFixe) Then
MsgBox ("Le téléphone doit étre une suite de chiffre")
Exit Sub
End If
'Test si le téléphone portable est bien une suite de nombre : si non message d'erreur et arrrét
If Not IsNull(Me.txtTélPortable) And Not IsNumeric(Me.txtTélPortable) Then
MsgBox ("Le téléphone doit étre une suite de chiffre")
Exit Sub
End If
'Test si le fax est bien une suite de nombre : si non message d'erreur et arrrét
If Not IsNull(Me.txtFax) And Not IsNumeric(Me.txtFax) Then
MsgBox ("Le fax doit étre une suite de chiffre")
Exit Sub
End If
'Affectation des valeur correspondantes aux variables
Sociéte = UCase(Me.txtNomSociéte)
NomInterlocuteur = UCase(Me.txtNomInterlocuteur)
PrenomInterlocuteur = Me.txtPrenomInterlocuteur
Adresse = Me.txtAdresse
CP = Me.txtCP
Ville = Me.txtVille
Pays = Me.txtPays
'si le champs telephone portable n'est pas remplit alors il prend la valeur 0
If IsNull(Me.txtTélPortable) Then
Portable = 0
Else
Portable = Me.txtTélPortable
End If
Fixe = Me.txtTélFixe
'si le champs fax n'est pas remplit alors il prend la valeur 0
If IsNull(Me.txtFax) Then
Fax = 0
Else
Fax = Me.txtFax
End If
'si le champs mais n'est pas remplit alors il prend la valeur null
If IsNull(Me.txtEmail) Then
Mail = Null
Else
Mail = Me.txtEmail
End If
'on remplace les apostrophe pas des doubles apostrophes sinon la réquéte ne fonctionne pas
Sociéte = Replace(Sociéte, "'", "''")
NomInterlocuteur = Replace(NomInterlocuteur, "'", "''")
PrenomInterlocuteur = Replace(PrenomInterlocuteur, "'", "''")
Adresse = Replace(Adresse, "'", "''")
Ville = Replace(Ville, "'", "''")
Pays = Replace(Pays, "'", "''")
Set odb = CurrentDb
'réquete qui permet de connaitre le nombre de resultat que renvoie la réquéte qui cherche l'ID du fournisseur ayant le nom et le nom d'intelocuteur entrée
sql = "SELECT Count(*) FROM (SELECT ID_Fournisseur FROM tbl_Fournisseurs where NomDeLaSociété = '" & Sociéte & "' and NomDeLinterlocuteur = '" & NomInterlocuteur & "' ) "
Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
oRst.OpenRecordset
'si la réquete précédente renvoie un nombre différent de 0 alors la sociéte et le nom de l'interlocteur existe deja : message erreur et arrét
If oRst.Fields(0).Value <> 0 Then
If Not (oRst.EOF) Then
message = MsgBox("L'interlocuteur " & PrenomInterlocuteur & " " & NomInterlocuteur & " de la sociéte " & Sociéte & " est deja présent dans la base, vous ne pouvez l'ajouter une deuxiéme fois", vbCritical, "Doublon")
Exit Sub
End If
End If
'sinon recherche du prochain ID_fournisseur
'on selectionne le maximum du champ ID_Fournisseur
sql = "SELECT ID_Fournisseur FROM tbl_Fournisseurs where ID_Fournisseur =(SELECT MAX(ID_Fournisseur) FROM tbl_Fournisseurs)"
Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
'on lui additionne 1
ID_Fournisseur = oRst.Fields("ID_Fournisseur").Value + 1
'requete d'insertion dans la table tbl_Fournisseurs les valeurs
sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')"
'Excecution de la requete
odb.Execute (sql)
message = MsgBox("Le fournisseur " & Sociéte & " a été correctement ajouté", vbInformation, "Ajout")
oRst.Close
odb.Close
Set oRst = Nothing
Set odb = Nothing
DoCmd.Close
End Sub |
Partager