info findfirst

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6269421
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)
Gilles MOUGNOZ
Le #6269411
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


macgiver
Le #6269401
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







Gilles MOUGNOZ
Le #6269391
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









Publicité
Poster une réponse
Anonyme