J'ai placé la procédure suivante dans la propriété SurSortie dans un
contrôle nommé Code_Client d'un formulaire:
Private Sub Code_Client_Exit(Cancel As Integer)
If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" &
Me.Code_Client & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire",
"[Code_Client]='" & Me.Code_Client & "'") > 0 Then
MsgBox Me.[Code_Client] & "Existe déjà"
Cancel = True
End If
End Sub
L'objectif de cette procédure était de vérifier si un Code Client existe
déjà soit dans la table Principale ou dans la table Secondaire de la BD.
Il est à noter que ce Code Client est créé automatiquement par une macro qui
extrait les 4 premiers caractères du nom de famille et le premier du prénom
d'un client. Ex: Bergevin Claude aura pour code BERGC. Ce code client,
dans la table sous-jacente au formulaire possède aussi une clé primaire .
J'aurais aimé que la vérification et le message "d'erreur" se fassent ( et
s'affichent) dès la sortie du champ Code Client et non seulement au prochain
enregistrement comme cela se fait habituellement avec la clé primaire (sans
procédure particulière).
Je croyais avoir résolu mon problème p.c.q. le message s'affiche lorsque
j'inscris un nom de famille et un prénom dans le formulaire puis passe au
champ Code Client (avec TAB, par exemple). Le Code Client est toujours créé
automatiquement... mais ... le problème est là!
Le message "d'erreur" défini dans la procédure ci-dessus, s'affiche même si
aucun Code Client identique n'existe dans la table Principale ou la
Secondaire de la BD! Le message "d'erreur" s'affiche cependant dès la
sortie du champ, comme voulu!
En d'autres mots...ça plante, peu importe les noms et prénoms inscrits donc,
le code client créé!!
P.-S: La procédure décrite plus haut m'a été suggérée par un collaborateur
au forum (Éric..), que je remercie encore. Mais, j'ai probablement omis
certains détails dans ma demande précédente sur ce forum... je refais une
demande en espérant être plus explicite cette fois!
J'ai aussi essayé de mettre la procédure dans une autre propriété de mon
contrôle Code_Client(ex: AvantMAJ - AprèsMAJ) mais là, le message défini
dans la procédure ne s'affiche pas. Il y a seulement le message habituel de
Access lorsqu'il y a doublons sur le Code Client et, à ce moment, la
vérification semble se faire seulement sur la table Principale.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Butch,
L'appel de la création du code_client doit se faire sur l'évènement Avant Mise à jour du controle Prénom. L'affectation uniquement si pas de doublon. Je pense que tu crées et affectes immédiatement d'où ton problème
Dans Prenom_BeforeUpdate, tu crées et affectes le code client à une variable (par ex: codeclt) puis tu vas regarder si, dans les tables tableprincipale et tablesecondaire, ce code créé n'existe pas déjà. Si c'est le cas, tu envoies le message d'erreur sinon tu l'affectes au champ Code_Client.
Tu ne dois pas rentrer dans le champ Code_Client car il est élaboré automatiquement. Pas de procédure de vérification sur ce champ, cela doit être fait avant.
Pour mémoire:
Private Sub Prenom_BeforeUpdate(Cancel As Integer) Dim codeclt as String ' Création du code codeclt = Left(UCase(Nom), 4) & Left(UCase(Prenom), 1) ' on verifie l'existence de codeclt dans les tables If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" & _ codeclt & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire", _ "[Code_Client]='" & codeclt & "'") > 0 Then MsgBox Me.[Code_Client] & "Existe déjà" Cancel = True Else Me.Code_Client = codeclt End If End Sub
Elimines la procédure Private Sub Code_Client_Exit(Cancel As Integer). N'utilises pas ta macro et testes cette procédure. Ca devrait répondre à ton besoin. Tiens moi au courant.
A+ Eric
"Butch" écrivait news:oqDEc.155999$:
Bonjour, (Logiciel : Access XP)
J'ai placé la procédure suivante dans la propriété SurSortie dans un contrôle nommé Code_Client d'un formulaire:
Private Sub Code_Client_Exit(Cancel As Integer) If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" & Me.Code_Client & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire", "[Code_Client]='" & Me.Code_Client & "'") > 0 Then MsgBox Me.[Code_Client] & "Existe déjà" Cancel = True End If End Sub
L'objectif de cette procédure était de vérifier si un Code Client existe déjà soit dans la table Principale ou dans la table Secondaire de la BD. Il est à noter que ce Code Client est créé automatiquement par une macro qui extrait les 4 premiers caractères du nom de famille et le premier du prénom d'un client. Ex: Bergevin Claude aura pour code BERGC. Ce code client, dans la table sous-jacente au formulaire possède aussi une clé primaire . J'aurais aimé que la vérification et le message "d'erreur" se fassent ( et s'affichent) dès la sortie du champ Code Client et non seulement au prochain enregistrement comme cela se fait habituellement avec la clé primaire (sans procédure particulière).
Je croyais avoir résolu mon problème p.c.q. le message s'affiche lorsque j'inscris un nom de famille et un prénom dans le formulaire puis passe au champ Code Client (avec TAB, par exemple). Le Code Client est toujours créé automatiquement... mais ... le problème est là!
Le message "d'erreur" défini dans la procédure ci-dessus, s'affiche même si aucun Code Client identique n'existe dans la table Principale ou la Secondaire de la BD! Le message "d'erreur" s'affiche cependant dès la sortie du champ, comme voulu! En d'autres mots...ça plante, peu importe les noms et prénoms inscrits donc, le code client créé!!
P.-S: La procédure décrite plus haut m'a été suggérée par un collaborateur au forum (Éric..), que je remercie encore. Mais, j'ai probablement omis certains détails dans ma demande précédente sur ce forum... je refais une demande en espérant être plus explicite cette fois!
J'ai aussi essayé de mettre la procédure dans une autre propriété de mon contrôle Code_Client(ex: AvantMAJ - AprèsMAJ) mais là, le message défini dans la procédure ne s'affiche pas. Il y a seulement le message habituel de Access lorsqu'il y a doublons sur le Code Client et, à ce moment, la vérification semble se faire seulement sur la table Principale.
Que faire? Merci à l'avance. Butch
Bonjour Butch,
L'appel de la création du code_client doit se faire sur l'évènement Avant
Mise à jour du controle Prénom. L'affectation uniquement si pas de
doublon. Je pense que tu crées et affectes immédiatement d'où ton
problème
Dans Prenom_BeforeUpdate, tu crées et affectes le code client à une
variable (par ex: codeclt) puis tu vas regarder si, dans les tables
tableprincipale et tablesecondaire, ce code créé n'existe pas déjà. Si
c'est le cas, tu envoies le message d'erreur sinon tu l'affectes au champ
Code_Client.
Tu ne dois pas rentrer dans le champ Code_Client car il est élaboré
automatiquement. Pas de procédure de vérification sur ce champ, cela doit
être fait avant.
Pour mémoire:
Private Sub Prenom_BeforeUpdate(Cancel As Integer)
Dim codeclt as String
' Création du code
codeclt = Left(UCase(Nom), 4) & Left(UCase(Prenom), 1)
' on verifie l'existence de codeclt dans les tables
If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" & _
codeclt & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire", _
"[Code_Client]='" & codeclt & "'") > 0 Then
MsgBox Me.[Code_Client] & "Existe déjà"
Cancel = True
Else
Me.Code_Client = codeclt
End If
End Sub
Elimines la procédure Private Sub Code_Client_Exit(Cancel As Integer).
N'utilises pas ta macro et testes cette procédure. Ca devrait répondre à
ton besoin. Tiens moi au courant.
J'ai placé la procédure suivante dans la propriété SurSortie dans un
contrôle nommé Code_Client d'un formulaire:
Private Sub Code_Client_Exit(Cancel As Integer)
If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" &
Me.Code_Client & "'") > 0 Or DCount("[Code_Client]",
"TableSecondaire", "[Code_Client]='" & Me.Code_Client & "'") > 0 Then
MsgBox Me.[Code_Client] & "Existe déjà"
Cancel = True
End If
End Sub
L'objectif de cette procédure était de vérifier si un Code Client
existe déjà soit dans la table Principale ou dans la table Secondaire
de la BD. Il est à noter que ce Code Client est créé automatiquement
par une macro qui extrait les 4 premiers caractères du nom de famille
et le premier du prénom d'un client. Ex: Bergevin Claude aura pour
code BERGC. Ce code client, dans la table sous-jacente au formulaire
possède aussi une clé primaire . J'aurais aimé que la vérification et
le message "d'erreur" se fassent ( et s'affichent) dès la sortie du
champ Code Client et non seulement au prochain enregistrement comme
cela se fait habituellement avec la clé primaire (sans procédure
particulière).
Je croyais avoir résolu mon problème p.c.q. le message s'affiche
lorsque j'inscris un nom de famille et un prénom dans le formulaire
puis passe au champ Code Client (avec TAB, par exemple). Le Code
Client est toujours créé automatiquement... mais ... le problème est
là!
Le message "d'erreur" défini dans la procédure ci-dessus, s'affiche
même si aucun Code Client identique n'existe dans la table Principale
ou la Secondaire de la BD! Le message "d'erreur" s'affiche cependant
dès la sortie du champ, comme voulu!
En d'autres mots...ça plante, peu importe les noms et prénoms inscrits
donc, le code client créé!!
P.-S: La procédure décrite plus haut m'a été suggérée par un
collaborateur au forum (Éric..), que je remercie encore. Mais, j'ai
probablement omis certains détails dans ma demande précédente sur ce
forum... je refais une demande en espérant être plus explicite cette
fois!
J'ai aussi essayé de mettre la procédure dans une autre propriété de
mon contrôle Code_Client(ex: AvantMAJ - AprèsMAJ) mais là, le message
défini dans la procédure ne s'affiche pas. Il y a seulement le
message habituel de Access lorsqu'il y a doublons sur le Code Client
et, à ce moment, la vérification semble se faire seulement sur la
table Principale.
L'appel de la création du code_client doit se faire sur l'évènement Avant Mise à jour du controle Prénom. L'affectation uniquement si pas de doublon. Je pense que tu crées et affectes immédiatement d'où ton problème
Dans Prenom_BeforeUpdate, tu crées et affectes le code client à une variable (par ex: codeclt) puis tu vas regarder si, dans les tables tableprincipale et tablesecondaire, ce code créé n'existe pas déjà. Si c'est le cas, tu envoies le message d'erreur sinon tu l'affectes au champ Code_Client.
Tu ne dois pas rentrer dans le champ Code_Client car il est élaboré automatiquement. Pas de procédure de vérification sur ce champ, cela doit être fait avant.
Pour mémoire:
Private Sub Prenom_BeforeUpdate(Cancel As Integer) Dim codeclt as String ' Création du code codeclt = Left(UCase(Nom), 4) & Left(UCase(Prenom), 1) ' on verifie l'existence de codeclt dans les tables If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" & _ codeclt & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire", _ "[Code_Client]='" & codeclt & "'") > 0 Then MsgBox Me.[Code_Client] & "Existe déjà" Cancel = True Else Me.Code_Client = codeclt End If End Sub
Elimines la procédure Private Sub Code_Client_Exit(Cancel As Integer). N'utilises pas ta macro et testes cette procédure. Ca devrait répondre à ton besoin. Tiens moi au courant.
A+ Eric
"Butch" écrivait news:oqDEc.155999$:
Bonjour, (Logiciel : Access XP)
J'ai placé la procédure suivante dans la propriété SurSortie dans un contrôle nommé Code_Client d'un formulaire:
Private Sub Code_Client_Exit(Cancel As Integer) If DCount("[Code_Client]", "TablePrincipale", "[Code_Client]='" & Me.Code_Client & "'") > 0 Or DCount("[Code_Client]", "TableSecondaire", "[Code_Client]='" & Me.Code_Client & "'") > 0 Then MsgBox Me.[Code_Client] & "Existe déjà" Cancel = True End If End Sub
L'objectif de cette procédure était de vérifier si un Code Client existe déjà soit dans la table Principale ou dans la table Secondaire de la BD. Il est à noter que ce Code Client est créé automatiquement par une macro qui extrait les 4 premiers caractères du nom de famille et le premier du prénom d'un client. Ex: Bergevin Claude aura pour code BERGC. Ce code client, dans la table sous-jacente au formulaire possède aussi une clé primaire . J'aurais aimé que la vérification et le message "d'erreur" se fassent ( et s'affichent) dès la sortie du champ Code Client et non seulement au prochain enregistrement comme cela se fait habituellement avec la clé primaire (sans procédure particulière).
Je croyais avoir résolu mon problème p.c.q. le message s'affiche lorsque j'inscris un nom de famille et un prénom dans le formulaire puis passe au champ Code Client (avec TAB, par exemple). Le Code Client est toujours créé automatiquement... mais ... le problème est là!
Le message "d'erreur" défini dans la procédure ci-dessus, s'affiche même si aucun Code Client identique n'existe dans la table Principale ou la Secondaire de la BD! Le message "d'erreur" s'affiche cependant dès la sortie du champ, comme voulu! En d'autres mots...ça plante, peu importe les noms et prénoms inscrits donc, le code client créé!!
P.-S: La procédure décrite plus haut m'a été suggérée par un collaborateur au forum (Éric..), que je remercie encore. Mais, j'ai probablement omis certains détails dans ma demande précédente sur ce forum... je refais une demande en espérant être plus explicite cette fois!
J'ai aussi essayé de mettre la procédure dans une autre propriété de mon contrôle Code_Client(ex: AvantMAJ - AprèsMAJ) mais là, le message défini dans la procédure ne s'affiche pas. Il y a seulement le message habituel de Access lorsqu'il y a doublons sur le Code Client et, à ce moment, la vérification semble se faire seulement sur la table Principale.