[VBA] Ajout dans table seulement s'il n'existe pas déjà

ThomasBTSCPI1 -  
 ThomasBTSCPI1 -
Bonjour,

je me suis lancé dans le VBA depuis une semaine et je suis bloqué.

Mon cas est le suivant, j'ai une base de donnée sous access, dans laquelle se trouve la table Propriétaire.

J'ai créé un formulaire qui permet d'ajouter un propriétaire dans la base de donnée. Ca marche. Mais j'aimerais que si le propriétaire existe déjà dans la base, qu'il ne me le rajoute pas.

Voilà mon code :

Private Sub Bouton_Ajout_Proprietaire_Click()

Dim db As DAO.Database

Dim prop As DAO.Recordset
Dim rst As Recordset 'test
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT num_Proprio FROM PROPRIETAIRE where nom_proprio = 'Me.Nom' and prenom_proprio = 'Me.Prenom'")

Set prop = db.OpenRecordset("PROPRIETAIRE")

prop.AddNew
prop("nom_Proprio").Value = Me.Nom
prop("prenom_Proprio").Value = Me.Prenom
prop("DateNaissance_Proprio").Value = Me.Naissance
prop("tel_proprio").Value = Me.Tel
prop("adresse_rue_proprio").Value = Me.Adresse
prop("code_postal_Proprio").Value = Me.CodePostal
prop("ville_proprio").Value = Me.Ville

If rst.BOF Then
prop.Update
MsgBox "Propriétaire ajouté avec succès !", vbInformation
Else
MsgBox "Propriétaire existant!", vbInformation
End If

Set prop = Nothing

End Sub

Le problème vient surement des 'Me.Nom' et 'Me.Prenom' , surement une erreur d'apostrophe ou de guillemets. Pour l'instant, il m'ajoute le propriétaire même s'il existe déjà. Et si j'enlève les apostrophes, il me dit " Trop peu de paramètres, 2 attendus".

Une idée ?

Dans l'espoir d'une réponse,

A voir également:

3 réponses

f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,
ceci devrait aller:

Set rst = Db.OpenRecordset("SELECT num_Proprio FROM PROPRIETAIRE where nom_proprio = '" & Me.Nom & "' and prenom_proprio = '" & Me.Prenom & "';")

Bonne suite
1
ThomasBTSCPI1
 
Génial ça marche !

Merci beaucoup !
0
ThomasBTSCPI1
 
Une dernière chose,

en essayant d'ajouter comme critères la date de naissance, ça ne marche pas.

Set rst = db.OpenRecordset("SELECT num_Proprio FROM PROPRIETAIRE where nom_proprio = '" & Me.Nom & "' and prenom_proprio = '" & Me.Prenom & "' and DateNaissance_proprio = '" &Me.Naissance& " ';")

Pouvez-vous me dire dans quel cas utiliser la syntaxe ' " & mavariable & " ' ? Et que faire en cas de date et de chiffre ?

J'avais cru comprendre que :

en cas de lettre : ' " & mavariable & " '
en cas de chiffre : mavariable
en cas de date : #mavariable#

Mais apparemment non.

Merci par avance pour votre aide.
0