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

info findfirst

4 réponses
Avatar
macgiver
Bonjour a tous, dans une table j'entre un numéro de billet (qui ne se
répètera jamais) avec des données reliés à ce billet. Si j'entre à nouveau
ce billet dans ma table je me suis fait une procédure su r l'événement
before_update m'indiquant que ce billet est déja présent et que je ne peux
l'ajouter, cependant j'aimerais, après le message, me pointer directement sur
ce billet de ma table, comment m'y prendre? avec findfirst j'ai essayer cette
procédure mais qui ne fonctionne pas :

Private Sub no_bordereau_BeforeUpdate(Cancel As Integer)
Dim var_bordereau As String
Dim rs As Object

var_bordereau = Me.no_bordereau.Value
If DCount("*", "T_retour_materiel", "no_bordereau='" & Me.no_bordereau &
"'") > 0 Then
MsgBox "Le bordereau " & [var_bordereau] & " existe déjà. Appuyer
sur OK et sur ESC"
Cancel = True
Set rs = Me.Recordset
rs.FindFirst "[id] = " & Str(Me![id])
Me.Bookmark = rs.Bookmark
End If

End Sub

4 réponses

Avatar
3stone
Salut,

"macgiver"
| Bonjour a tous, dans une table j'entre un numéro de billet (qui ne se
| répètera jamais) avec des données reliés à ce billet. Si j'entre à nouveau
| ce billet dans ma table je me suis fait une procédure su r l'événement
| before_update m'indiquant que ce billet est déja présent et que je ne peux
| l'ajouter, cependant j'aimerais, après le message, me pointer directement sur
| ce billet de ma table, comment m'y prendre? avec findfirst j'ai essayer cette
| procédure mais qui ne fonctionne pas :
|


Essaies :

Private Sub no_bordereau_BeforeUpdate(Cancel As Integer)
Dim var_bordereau As String
Dim rs As Object
Dim Pk as long

var_bordereau = Me.no_bordereau.Value
If DCount("*", "T_retour_materiel", "no_bordereau='" & Me.no_bordereau & "'") > 0 Then
MsgBox "Le bordereau " & [var_bordereau] & " existe déjà. Appuyer sur OK et sur ESC"
Cancel = True
Pk = Me.ID
Me.Undo
Set rs = Me.RecordsetClone
rs.FindFirst "[id] = " & Pk
Me.Bookmark = rs.Bookmark
Set rs = Nothing
End If

End Sub


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gilles MOUGNOZ
Bonjour, MacGiver
Tu fais ton findfirst sur "id", il faudrait plutôt le faire sur
"no_bordereau" avec un id différent:
rs.FindFirst "[no_bordereau]=" & Str(Me![no_bordereau]) & " AND [id] <>
" & Str(Me![id])
Par ailleurs, je ne ferai pas le test sur BeforeUpdate: comme tu annules
l'événement, le fait de changer d'enregistrement courant va valider ta
saisie malgré tout ou, pire, faire planter le truc, j'hésite.
A toi de nous dire ! ;-)
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Bonjour a tous, dans une table j'entre un numéro de billet (qui ne se
répètera jamais) avec des données reliés à ce billet. Si j'entre à
nouveau
ce billet dans ma table je me suis fait une procédure su r l'événement
before_update m'indiquant que ce billet est déja présent et que je ne peux
l'ajouter, cependant j'aimerais, après le message, me pointer directement
sur
ce billet de ma table, comment m'y prendre? avec findfirst j'ai essayer
cette
procédure mais qui ne fonctionne pas :

Private Sub no_bordereau_BeforeUpdate(Cancel As Integer)
Dim var_bordereau As String
Dim rs As Object

var_bordereau = Me.no_bordereau.Value
If DCount("*", "T_retour_materiel", "no_bordereau='" & Me.no_bordereau &
"'") > 0 Then
MsgBox "Le bordereau " & [var_bordereau] & " existe déjà. Appuyer
sur OK et sur ESC"
Cancel = True
Set rs = Me.Recordset
rs.FindFirst "[id] = " & Str(Me![id])
Me.Bookmark = rs.Bookmark
End If

End Sub


Avatar
macgiver
Effectivement ça plante ma base de données. Comment m'y prendre pour remédier
à ce problème?

merci


Bonjour, MacGiver
Tu fais ton findfirst sur "id", il faudrait plutôt le faire sur
"no_bordereau" avec un id différent:
rs.FindFirst "[no_bordereau]=" & Str(Me![no_bordereau]) & " AND [id] <>
" & Str(Me![id])
Par ailleurs, je ne ferai pas le test sur BeforeUpdate: comme tu annules
l'événement, le fait de changer d'enregistrement courant va valider ta
saisie malgré tout ou, pire, faire planter le truc, j'hésite.
A toi de nous dire ! ;-)
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Bonjour a tous, dans une table j'entre un numéro de billet (qui ne se
répètera jamais) avec des données reliés à ce billet. Si j'entre à
nouveau
ce billet dans ma table je me suis fait une procédure su r l'événement
before_update m'indiquant que ce billet est déja présent et que je ne peux
l'ajouter, cependant j'aimerais, après le message, me pointer directement
sur
ce billet de ma table, comment m'y prendre? avec findfirst j'ai essayer
cette
procédure mais qui ne fonctionne pas :

Private Sub no_bordereau_BeforeUpdate(Cancel As Integer)
Dim var_bordereau As String
Dim rs As Object

var_bordereau = Me.no_bordereau.Value
If DCount("*", "T_retour_materiel", "no_bordereau='" & Me.no_bordereau &
"'") > 0 Then
MsgBox "Le bordereau " & [var_bordereau] & " existe déjà. Appuyer
sur OK et sur ESC"
Cancel = True
Set rs = Me.Recordset
rs.FindFirst "[id] = " & Str(Me![id])
Me.Bookmark = rs.Bookmark
End If

End Sub







Avatar
Gilles MOUGNOZ
Re,
Je ferai la saisie du numéro dans un contrôle indépendant.
S'il existe, tu te places dessus avec le code précédent, sinon, tu te places
sur un enregistrement vierge dont tu rempli le numéro avec ce que tu as
saisie dans le contrôle indépendant.
C'est juste une idée vite faite...
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Effectivement ça plante ma base de données. Comment m'y prendre pour
remédier
à ce problème?

merci


Bonjour, MacGiver
Tu fais ton findfirst sur "id", il faudrait plutôt le faire sur
"no_bordereau" avec un id différent:
rs.FindFirst "[no_bordereau]=" & Str(Me![no_bordereau]) & " AND [id]
<>
" & Str(Me![id])
Par ailleurs, je ne ferai pas le test sur BeforeUpdate: comme tu annules
l'événement, le fait de changer d'enregistrement courant va valider ta
saisie malgré tout ou, pire, faire planter le truc, j'hésite.
A toi de nous dire ! ;-)
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Bonjour a tous, dans une table j'entre un numéro de billet (qui ne se
répètera jamais) avec des données reliés à ce billet. Si j'entre à
nouveau
ce billet dans ma table je me suis fait une procédure su r l'événement
before_update m'indiquant que ce billet est déja présent et que je ne
peux
l'ajouter, cependant j'aimerais, après le message, me pointer
directement
sur
ce billet de ma table, comment m'y prendre? avec findfirst j'ai essayer
cette
procédure mais qui ne fonctionne pas :

Private Sub no_bordereau_BeforeUpdate(Cancel As Integer)
Dim var_bordereau As String
Dim rs As Object

var_bordereau = Me.no_bordereau.Value
If DCount("*", "T_retour_materiel", "no_bordereau='" & Me.no_bordereau
&
"'") > 0 Then
MsgBox "Le bordereau " & [var_bordereau] & " existe déjà.
Appuyer
sur OK et sur ESC"
Cancel = True
Set rs = Me.Recordset
rs.FindFirst "[id] = " & Str(Me![id])
Me.Bookmark = rs.Bookmark
End If

End Sub