Access test existance valeur de clé primaire
artamys
Messages postés
127
Statut
Membre
-
Le Pingou Messages postés 12350 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12350 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je travaille sur un projet.
Nous avons une table Projet. Dans cette table nous avons un champ NumProjet : Numéro de projet.
Dans une autre table qui référence les commerciaux des sociétés extérieures en charges des projets , nous avons le Champs NumProjet. Ce champs est une clé primaire sans possibilité de doublon. : 1 commercial extérieur par projet.
Mon objectif est d'afficher la valeur du champ si la valeur de la clé primaire correspond au numéro du projet de la table de projet.
Ceci j'y arrive parfaitement.
Mon problème est lorsque pour un projet, je n'ai pas de commerciaux et donc pas de valeur dans le champ NumProjet dans la table des commerciaux extérieurs. Dans ce cas j'ai un message d'erreur comme quoi l'enregistrement n'existe pas ce qui est tout a fait normal.
Mon objectif est de savoir en VBA si le numéro (variable et non figé) existe dans la table des commerciaux. Et s'il existe faire appel a telle ou telle procédure. Bien sur je pourrais neutraliser le message d'erreur mais ce n'est pas une solution propre.
La question est quelle propriété qui permet de tester l'existence d'une valeur dans une table ?
La fonction ISNULL n'est pas appropriée.
Existe t'il une fonction VBA qui teste l'existence d'une valeur dans un champ et qui renvoie true ou false ?
Merci à vous.
Je travaille sur un projet.
Nous avons une table Projet. Dans cette table nous avons un champ NumProjet : Numéro de projet.
Dans une autre table qui référence les commerciaux des sociétés extérieures en charges des projets , nous avons le Champs NumProjet. Ce champs est une clé primaire sans possibilité de doublon. : 1 commercial extérieur par projet.
Mon objectif est d'afficher la valeur du champ si la valeur de la clé primaire correspond au numéro du projet de la table de projet.
Ceci j'y arrive parfaitement.
Mon problème est lorsque pour un projet, je n'ai pas de commerciaux et donc pas de valeur dans le champ NumProjet dans la table des commerciaux extérieurs. Dans ce cas j'ai un message d'erreur comme quoi l'enregistrement n'existe pas ce qui est tout a fait normal.
Mon objectif est de savoir en VBA si le numéro (variable et non figé) existe dans la table des commerciaux. Et s'il existe faire appel a telle ou telle procédure. Bien sur je pourrais neutraliser le message d'erreur mais ce n'est pas une solution propre.
La question est quelle propriété qui permet de tester l'existence d'une valeur dans une table ?
La fonction ISNULL n'est pas appropriée.
Existe t'il une fonction VBA qui teste l'existence d'une valeur dans un champ et qui renvoie true ou false ?
Merci à vous.
A voir également:
- Access test existance valeur de clé primaire
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Steam deck oled test - Guide
- Test performance pc - Guide
- Clé usb - Accueil - Stockage
3 réponses
Bonjour artamys,
Faire un test sur le champ NumProjet dans la table des commerciaux :
If IsNull(Me. NumProjet) Then ? si le résultat est Vrai
MsgBox "Il n’y a pas de commercial attribué ! "
Exit Sub ‘ sortir de la fonction
End If
A placer dans la fonction adéquate
Faire un test sur le champ NumProjet dans la table des commerciaux :
If IsNull(Me. NumProjet) Then ? si le résultat est Vrai
MsgBox "Il n’y a pas de commercial attribué ! "
Exit Sub ‘ sortir de la fonction
End If
A placer dans la fonction adéquate
Non ce n'est pas ça, mais merci de la réflexion.
En fait la fonction isnull ne fonctionne pas. Il y a renvoi d'un message d'erreur car la valeur n'est pas nulle elle est inexistante.
J'ai trouvé la solution.
Ci dessous le code.
Bonjour la prise de tête pour trouver l'utilisation appropriée de .nomatch.
Sub RechercheCommercial()
Set db = CurrentDb()
Set Base_creationcontactclient = db.OpenRecordset("TB_ContactCommercial")
Dim IndexProjet As Long
IndexProjet = ListeProjet.Value
Base_creationcontactclient.Index = "primarykey"
Base_creationcontactclient.Seek "=", IndexProjet
'If Base_creationcontactclient.NoMatch = True Then MsgBox ("Vide")
If Base_creationcontactclient.NoMatch = True Then Exit Sub
CommercialClient.Value = Base_creationcontactclient("NomContact")
En fait la fonction isnull ne fonctionne pas. Il y a renvoi d'un message d'erreur car la valeur n'est pas nulle elle est inexistante.
J'ai trouvé la solution.
Ci dessous le code.
Bonjour la prise de tête pour trouver l'utilisation appropriée de .nomatch.
Sub RechercheCommercial()
Set db = CurrentDb()
Set Base_creationcontactclient = db.OpenRecordset("TB_ContactCommercial")
Dim IndexProjet As Long
IndexProjet = ListeProjet.Value
Base_creationcontactclient.Index = "primarykey"
Base_creationcontactclient.Seek "=", IndexProjet
'If Base_creationcontactclient.NoMatch = True Then MsgBox ("Vide")
If Base_creationcontactclient.NoMatch = True Then Exit Sub
CommercialClient.Value = Base_creationcontactclient("NomContact")