J'ai une table avec 2 cl=E9s index.
Lorsque l'utilisateur saisie une nouvelle entr=E9e dans son formulaire,
il commence a saisir les deux cl=E9s primaires (une date et un numero),
j'aimerai pouvoir verifier que l'enregistrement avec ces deux cl=E9
n'existent pas ailleur dans la table.
Si l'enregistrement existe d=E9j=E0, il faudrai qu'automatiquement ca
annule le nouvel enregistrement et que ca place sur l'enregistrement
existant en question.
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
3stone
Salut noisette,
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
<Coconuts74@gmail.com> a écrit :
J'ai une table avec 2 clés index.
Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire,
il commence a saisir les deux clés primaires (une date et un numero),
j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé
n'existent pas ailleur dans la table.
Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca
annule le nouvel enregistrement et que ca place sur l'enregistrement
existant en question.
Pouvez vous me dire comment faire ?
______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas
de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une
gestion personnelle, il faut que, dans l'événement "sur avant mise à jour"
du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer)
Dim DateActu As Date
Dim NumeroActu As Long
DateActu = Me.LaDate
NumeroActu = Me.Numero
With Me.RecordsetClone
.FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _
& " AND [Numero]=" & NumeroActu
If Not .NoMatch Then
Me.Undo
Cancel = True
Me.Bookmark = .Bookmark
MsgBox "Cet données existe déjà..."
End If
End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra p as de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déj à...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy #") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail, il faut que j'ouvre le formulaire en mode modification pour que cela fonctionne. Car si j'ouvre en mode ajout, il m'affiche pas le message et il me place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode modification mais qu'a l'ouverture il se place sur une nouvelle feuille a saisir ?
Merci d'avance
On 24 nov, 16:56, "3stone" <home@sweet_home.be> wrote:
Salut noisette,
<Coconut...@gmail.com> a écrit :
J'ai une table avec 2 clés index.
Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire,
il commence a saisir les deux clés primaires (une date et un numero),
j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé
n'existent pas ailleur dans la table.
Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca
annule le nouvel enregistrement et que ca place sur l'enregistrement
existant en question.
Pouvez vous me dire comment faire ?
______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra p as
de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une
gestion personnelle, il faut que, dans l'événement "sur avant mise à jour"
du second champ (le numéro) tu vérifier si ces valeurs existe déj à...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer)
Dim DateActu As Date
Dim NumeroActu As Long
DateActu = Me.LaDate
NumeroActu = Me.Numero
With Me.RecordsetClone
.FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy #") _
& " AND [Numero]=" & NumeroActu
If Not .NoMatch Then
Me.Undo
Cancel = True
Me.Bookmark = .Bookmark
MsgBox "Cet données existe déjà..."
End If
End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail,
il faut que j'ouvre le formulaire en mode modification pour que cela
fonctionne.
Car si j'ouvre en mode ajout, il m'affiche pas le message et il me
place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode
modification mais qu'a l'ouverture il se place sur une nouvelle
feuille a saisir ?
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra p as de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déj à...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy #") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail, il faut que j'ouvre le formulaire en mode modification pour que cela fonctionne. Car si j'ouvre en mode ajout, il m'affiche pas le message et il me place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode modification mais qu'a l'ouverture il se place sur une nouvelle feuille a saisir ?
Merci d'avance
3stone
Salut,
"Jean-Michel"
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail, il faut que j'ouvre le formulaire en mode modification pour que cela fonctionne. Car si j'ouvre en mode ajout, il m'affiche pas le message et il me place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode modification mais qu'a l'ouverture il se place sur une nouvelle feuille a saisir ? ________________
Bien sûr, il faut être en mode modification... en mode ajout, il n'y a rien dans le recordset et il faut alors aller voir dans la table, annuler les saisies du formulaire, basculer en mode modification pour ensuite afficher l'enregistrement trouvé...
<Coconut...@gmail.com> a écrit :
J'ai une table avec 2 clés index.
Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire,
il commence a saisir les deux clés primaires (une date et un numero),
j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé
n'existent pas ailleur dans la table.
Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca
annule le nouvel enregistrement et que ca place sur l'enregistrement
existant en question.
Pouvez vous me dire comment faire ?
______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas
de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une
gestion personnelle, il faut que, dans l'événement "sur avant mise à jour"
du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer)
Dim DateActu As Date
Dim NumeroActu As Long
DateActu = Me.LaDate
NumeroActu = Me.Numero
With Me.RecordsetClone
.FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _
& " AND [Numero]=" & NumeroActu
If Not .NoMatch Then
Me.Undo
Cancel = True
Me.Bookmark = .Bookmark
MsgBox "Cet données existe déjà..."
End If
End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail,
il faut que j'ouvre le formulaire en mode modification pour que cela
fonctionne.
Car si j'ouvre en mode ajout, il m'affiche pas le message et il me
place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode
modification mais qu'a l'ouverture il se place sur une nouvelle
feuille a saisir ?
________________
Bien sûr, il faut être en mode modification...
en mode ajout, il n'y a rien dans le recordset et il faut alors aller voir
dans la table, annuler les saisies du formulaire, basculer en mode modification
pour ensuite afficher l'enregistrement trouvé...
a écrit : J'ai une table avec 2 clés index. Lorsque l'utilisateur saisie une nouvelle entrée dans son formulaire, il commence a saisir les deux clés primaires (une date et un numero), j'aimerai pouvoir verifier que l'enregistrement avec ces deux clé n'existent pas ailleur dans la table. Si l'enregistrement existe déjà, il faudrai qu'automatiquement ca annule le nouvel enregistrement et que ca place sur l'enregistrement existant en question.
Pouvez vous me dire comment faire ? ______
Je suppose que tu parles d'une clé primaire composée de 2 champs ?
Si cette clé primaire est correctement définie, Access ne permettra pas de créer ce nouvel enregistrement, justement...
Par contre, si tu souhaites éviter le message renvoyé par Access, par une gestion personnelle, il faut que, dans l'événement "sur avant mise à jour" du second champ (le numéro) tu vérifier si ces valeurs existe déjà...
Si le champ date se nomme "LaDate" et le champ numérique "Numero" :
Private Sub Numero_BeforeUpdate(Cancel As Integer) Dim DateActu As Date Dim NumeroActu As Long DateActu = Me.LaDate NumeroActu = Me.Numero
With Me.RecordsetClone .FindFirst "[LaDate]=" & Format(DateActu, "#mm-dd-yyyy#") _ & " AND [Numero]=" & NumeroActu If Not .NoMatch Then Me.Undo Cancel = True Me.Bookmark = .Bookmark MsgBox "Cet données existe déjà..." End If End With
End Sub
devrait faire ce que tu souhaites (en adaptant le nom des champs)
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
Bonjour Pierre,
C'est exactement ce que je voulais et ca fonctionne, sauf un detail, il faut que j'ouvre le formulaire en mode modification pour que cela fonctionne. Car si j'ouvre en mode ajout, il m'affiche pas le message et il me place pas dans la donnée identique voulue.
Donc ma question : est ce qu'on peux ouvrir un formulaire en mode modification mais qu'a l'ouverture il se place sur une nouvelle feuille a saisir ? ________________
Bien sûr, il faut être en mode modification... en mode ajout, il n'y a rien dans le recordset et il faut alors aller voir dans la table, annuler les saisies du formulaire, basculer en mode modification pour ensuite afficher l'enregistrement trouvé...