Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pointer vers bonne donnée

3 réponses
Avatar
Coconuts74
Bonjour,

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.

Pouvez vous me dire comment faire ?

Merci d'avance

Jean-Michel

3 réponses

Avatar
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)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Jean-Michel
On 24 nov, 16:56, "3stone" wrote:
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 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
Avatar
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é...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)