Bonjour,
Difficile de t'indiquer un piste avec si peu d'indices.
Poste le zip de ta base (en version 2000) pour qu'on puisse ausculter.
Bonjour,
Difficile de t'indiquer un piste avec si peu d'indices.
Poste le zip de ta base (en version 2000) pour qu'on puisse ausculter.
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Bonjour, merci à vous de me répondre, mais impossible de sauver ma base sous le format ACCESS 2000, apparemment des éléments ne seraient pas compatible , snif..
Je vais essayer de noter les messages d'erreur et de placer mon code, cela pourrait peut-être vous aider.
"Un index ou une clé principale ne peut contenir une valeur nulle" si on appuie sur Ok : "Impossible d'enregistrer cet enregistrement pour l'instant" si on appuye pour ok pour fermer, cela ne pourra enregistrer.
En finalité, qu'il n'enregistre pas ne me dérange pas puisque le numéro encodé est connu, et je veux juste sortir de la procédure. Pour un utilisateur, avoir ces messages inquiète, lol.
Je pense qu'il y à une procédure afin que les message d'erreurs pour ce coup n'apparaissent pas, mais....
Je trouve dommage de ne pas savoir envoyer ma base, cela m'aurait fais grand plaisir que mes codes soit vérifiés par un spécialiste, à mon sens je dois faire des truc compliqué ou je devrais aller au plus simple, lol.
Matricule_Pers étant la clé primaire de ma base Personnel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Matricule_Pers_BeforeUpdate(Cancel As Integer) If IsNull(Me.Matricule_Pers) Then Exit Sub If DCount("*", "Personnel", "Matricule_Pers = '" & Me.Matricule_Pers & "'") <> 0 Then MsgBox "Ce Matricule existe Déjà !", vbCritical Cancel = True End If End Sub
Encore merci de ton attention et joyeuses fêtes.
bonsoir,
Code : Sélectionner tout - Visualiser dans une fenêtre à part If IsNull(Me.Matricule_Pers) Then Exit Subdans ce cas il ne faudrait pas faire un Exit Sub si la clé primaire est nulle car c'est cela qui provoque cette erreur : "Un index ou une clé principale ne peut contenir une valeur nulle".Matricule_Pers étant la clé primaire de ma base Personnel
PS: tu peux poster ta base au format autre que 2000 car les autres forumeurs peuvent lire d'autres formats que mdb
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bien vu Guy !
Meilleurs vœux pour 2019...
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
salut Claude,
à toi pareillement, accompagné d'une bonne santé !Meilleurs vœux pour 2019...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Je me permets de poursuivre la discussion.
Je veux moi aussi tester des doublons lors d'une saisie mais sur deux variables numériques.
Lorsque je teste sur une seule valeur, la fonction DCount me renvoie bien le résultat attendu.
De même avec l'autre valeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire)
Par contre, je n'arrive pas à faire le test sur les deux valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DCount("*", "TJ_Elève_Responsable_V2", "ID_Responsable = " & lstResults.Column(0))
J'ai comme message d'erreur "incompatibilité de type".
Code : Sélectionner tout - Visualiser dans une fenêtre à part DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire And "ID_Responsable = " & lstResults.Column(0))
Est-ce que vous auriez une idée ?
Merci d'avance.
Ed
Bonjour,
Plutôt ceci comme syntaxe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire & " And ID_Responsable = " & lstResults.Column(0))
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Voici la solution que j'ai testé sur ma table Access et qui fonctionne parfaitement à vous d'adapter les noms table requête et champs :
Détecter Doublon sur champ Calculé de ma table Dépenses Charges Syndic
Dans cette table, créer un champs calculé "DetectDoublon" qui concatène certains champs dans leur ordre de saisie :
Ensuite créer une requête "Doublons pour Dépenses Charges SyndicReq" qui Recherche les doubons sur le champs "DetectDoublon" de cette table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Année([Date dépenses]) & "-" & [Libellé] & "-" & [Réf A-P Syndic]
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT [Dépenses Charges Syndic].DetectDoublon, [Dépenses Charges Syndic].Libellé, [Dépenses Charges Syndic].[Réf A-P Syndic], [Dépenses Charges Syndic].[Date dépenses] FROM [Dépenses Charges Syndic] WHERE ((([Dépenses Charges Syndic].DetectDoublon) In (SELECT [DetectDoublon] FROM [Dépenses Charges Syndic] As Tmp GROUP BY [DetectDoublon] HAVING Count(*)>1 ))) ORDER BY [Dépenses Charges Syndic].DetectDoublon;
Ensuite dans le formulaire adossé à la saisie des datas de cette table ;
dans l'évènement Après mise à jour du dernier champs saisi en l'occurrence le champ "Réf A-P Syndic"
je rentre ce code VBA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Réf_A_P_Syndic_AfterUpdate() If DCount("*", "Doublons pour Dépenses Charges SyndicReq", Me.DetectDoublon) > 0 Then MsgBox "Cet ajout ferait un doublon !", vbCritical Cancel = True End If End Sub
bonsoir traderpierre,
sauf que dans ton code tu utilises l'évènement After_Update qui est déclenché après la mise à jour (comme son nom l'indique). Donc en cas d'erreur le Cancel = True n'aura aucun effet, la saisie est déjà validée.Voici la solution que j'ai testé sur ma table Access et qui fonctionne parfaitement à vous d'adapter les noms table requête et champs :
Il faudrait mettre le code dans l'évènement Before_Update du formulaire: c'est l'évènement qui se déclenche avant de passer à l'enregistrement suivant en formulaire unique.
D'autre part je ne comprend pas à quoi sert Me.DetectDoublon ici:
normalement le paramètre Critères doit contenir un critère de sélection "Champ1= " & UneVariable ou "Champ2 <> 0" etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part DCount("*", "Doublons pour Dépenses Charges SyndicReq", Me.DetectDoublon) > 0
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager