Alerte doublon sur champ calculé
Résolu
traderpierre
Messages postés
291
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Access ne permettant pas de créer un index sans doublon sur un champ calculé,
j'ai tenté ceci
Dans mon formulaire de saisie des appels de fonds d'un Syndic,
Il y a un appel de fonds par trimestre
En conséquence dans la table à laquelle est adossé mon formulaire
J'ai créé une liste déroulante Champs "Libellé" Qui contient les valeurs suivantes :
1er Appel de Fonds
2ème Appel de fonds
3ème Appel de fonds
4ème Appel de fonds
Avec ensuite un champ "Date dépenses"qui a pour valeur par défaut Maintenant()
Puis un champ calculé "DetectDoublon" (que je rendrai invisible par la suite)
dont la source de contrôle est la suivante : =[Libellé] & Année([Date dépenses])
J'ai vérifié la concanétation fonctionne correctement
Ensuite j'ai créé cet évènement après la mise à jour du champ Libellé
Private Sub Libellé_AfterUpdate()
If DCount(Me.DetectDoublon <> 0) Then
MsgBox "Cet ajout Ferait un doublon !", vbCritical
Cancel = True
End If
End Sub
Avec ou sans doublon j'obtiens cette message Box
Erreur de compilation
Argument non facultatif
Pouvez-vous m'aider, je tourne en rond !!!!

Access ne permettant pas de créer un index sans doublon sur un champ calculé,
j'ai tenté ceci
Dans mon formulaire de saisie des appels de fonds d'un Syndic,
Il y a un appel de fonds par trimestre
En conséquence dans la table à laquelle est adossé mon formulaire
J'ai créé une liste déroulante Champs "Libellé" Qui contient les valeurs suivantes :
1er Appel de Fonds
2ème Appel de fonds
3ème Appel de fonds
4ème Appel de fonds
Avec ensuite un champ "Date dépenses"qui a pour valeur par défaut Maintenant()
Puis un champ calculé "DetectDoublon" (que je rendrai invisible par la suite)
dont la source de contrôle est la suivante : =[Libellé] & Année([Date dépenses])
J'ai vérifié la concanétation fonctionne correctement
Ensuite j'ai créé cet évènement après la mise à jour du champ Libellé
Private Sub Libellé_AfterUpdate()
If DCount(Me.DetectDoublon <> 0) Then
MsgBox "Cet ajout Ferait un doublon !", vbCritical
Cancel = True
End If
End Sub
Avec ou sans doublon j'obtiens cette message Box
Erreur de compilation
Argument non facultatif
Pouvez-vous m'aider, je tourne en rond !!!!

Configuration: Windows / Firefox 75.0
A voir également:
- Alerte doublon sur champ calculé
- Fausse alerte mcafee - Accueil - Piratage
- Fausse alerte connexion facebook - Guide
- Comment calculer la moyenne sur excel - Guide
- Doublon photo - Guide
- Message alerte virus google chrome - Accueil - Virus
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je suppose que DetectDoublon n'est pas un champ d'une table, et est un contrôle dans un formulaire.
as-tu essayé en retirant dcount?
as-tu essayé en retirant dcount?
Je viens de trouver la solution, ça fonctionne super bien !!!
La voici expliquée en détail
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 :
= Année([Date dépenses])&"-"&[Libellé] & "-" & [Réf A-P Syndic]
Ensuite créer une requête "Doublons pour Dépenses Charges SyndicReq" qui Recherche les doubons sur le champs "DetectDoublon" de cette table :
Code Sql :
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'occurence le champ "Réf A-P Syndic"
je rentre ce code VBA :
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
ça fonctionne super bien
La voici expliquée en détail
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 :
= Année([Date dépenses])&"-"&[Libellé] & "-" & [Réf A-P Syndic]
Ensuite créer une requête "Doublons pour Dépenses Charges SyndicReq" qui Recherche les doubons sur le champs "DetectDoublon" de cette table :
Code Sql :
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'occurence le champ "Réf A-P Syndic"
je rentre ce code VBA :
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
ça fonctionne super bien
je me demande si tu ne peux pas simplifier ta requête et ne garder que:
ou même, sans utiliser le champ calculé, qui ne sert peut-être à rien:
dans les deux cas, supprimer la troisième paramètre de dcount
SELECT [DetectDoublon],count(*) FROM [Dépenses Charges Syndic] GROUP BY [DetectDoublon] HAVING Count(*)>1
ou même, sans utiliser le champ calculé, qui ne sert peut-être à rien:
SELECT Année([Date dépenses]), [Libellé], Réf A-P Syndic], count(*) FROM [Dépenses Charges Syndic] GROUP BY Année([Date dépenses]), [Libellé], Réf A-P Syndic] HAVING Count(*)>1
dans les deux cas, supprimer la troisième paramètre de dcount
ce que tu peux aussi faire sans le contrôle DetectDoublon.