Il y a une précédure sur l'activation d'un formulaire:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Dim vrBook As Variant
vrBook = Me.Bookmark
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Ceci fonctionne bien... sauf dans le cas où je clic
le bouton pour ajouter un enregistrement. Dans ce
cas-là, une erreur est retournée:
Erreur d'exécution 3021
No current record
C'est quoi une méthode "propre" (autre que Resume Next)
pour régler ce problème ?
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
Michel Pellegrini
(Moi) |> Problème avec Me.Bookmark lorsque j'ajoute |> un enregistrement dans le formulaire. Une |> erreur est retournée: "No current record"
Je viens de trouver une méthode, mais il existe peut-être une méthole plus conventionnelle:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ If VarType(Me.UnControle) = vbNull Then ... End If ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Lors d'un nouvel enregistrement, VarType retourne vbNull vu qu'il n'y a encore rien d'inscrit dans le contrôle, et c'est seulement dans ce cas qu'il retourne vbNull parce que le contrôle est relié à un champ où le null est interdit.
Auparavant, j'avais fait des tests avec EOF, ça réglait le problème mais ça en provoquait un autre, je ne pouvais pas mettre un Bookmark sur le dernier enregistrement.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ S'il existe une méthode conventionnelle pour vérifier si l'enregistrement en cours est un nouvel enregistrement, j'aimerais bien qu'on me le dise
Vercheres QC Canada
(Moi)
|> Problème avec Me.Bookmark lorsque j'ajoute
|> un enregistrement dans le formulaire. Une
|> erreur est retournée: "No current record"
Je viens de trouver une méthode, mais il existe
peut-être une méthole plus conventionnelle:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
If VarType(Me.UnControle) = vbNull Then
...
End If
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Lors d'un nouvel enregistrement, VarType retourne
vbNull vu qu'il n'y a encore rien d'inscrit dans
le contrôle, et c'est seulement dans ce cas qu'il
retourne vbNull parce que le contrôle est relié à
un champ où le null est interdit.
Auparavant, j'avais fait des tests avec EOF, ça
réglait le problème mais ça en provoquait un autre,
je ne pouvais pas mettre un Bookmark sur le dernier
enregistrement.
Post-scriptum
¯¯¯¯¯¯¯¯¯¯¯¯¯
S'il existe une méthode conventionnelle pour vérifier
si l'enregistrement en cours est un nouvel enregistrement,
j'aimerais bien qu'on me le dise
(Moi) |> Problème avec Me.Bookmark lorsque j'ajoute |> un enregistrement dans le formulaire. Une |> erreur est retournée: "No current record"
Je viens de trouver une méthode, mais il existe peut-être une méthole plus conventionnelle:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ If VarType(Me.UnControle) = vbNull Then ... End If ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Lors d'un nouvel enregistrement, VarType retourne vbNull vu qu'il n'y a encore rien d'inscrit dans le contrôle, et c'est seulement dans ce cas qu'il retourne vbNull parce que le contrôle est relié à un champ où le null est interdit.
Auparavant, j'avais fait des tests avec EOF, ça réglait le problème mais ça en provoquait un autre, je ne pouvais pas mettre un Bookmark sur le dernier enregistrement.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ S'il existe une méthode conventionnelle pour vérifier si l'enregistrement en cours est un nouvel enregistrement, j'aimerais bien qu'on me le dise
Vercheres QC Canada
Michel Pellegrini
Je viens de faire une recherche sur internet.
On dirait que la méthode consacrée pour régler l'erreur 3021 (Me.Bookmark alors que c'est un nouvel enregistrement) n'est pas de mettre un "If" pour vérifier si c'est un nouvel enregistrement, mais de laisser l'erreur là et la traiter (If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente de celle est employée en programmation standard (la programmation d'un exécutable), c'est une façon assez particulière de programmer.
Vercheres QC Canada
Je viens de faire une recherche sur internet.
On dirait que la méthode consacrée pour régler l'erreur 3021
(Me.Bookmark alors que c'est un nouvel enregistrement) n'est
pas de mettre un "If" pour vérifier si c'est un nouvel
enregistrement, mais de laisser l'erreur là et la traiter
(If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente
de celle est employée en programmation standard (la programmation
d'un exécutable), c'est une façon assez particulière de programmer.
On dirait que la méthode consacrée pour régler l'erreur 3021 (Me.Bookmark alors que c'est un nouvel enregistrement) n'est pas de mettre un "If" pour vérifier si c'est un nouvel enregistrement, mais de laisser l'erreur là et la traiter (If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente de celle est employée en programmation standard (la programmation d'un exécutable), c'est une façon assez particulière de programmer.
Vercheres QC Canada
Sylvain Lafontaine
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il s'agit ou non d'un nouvel enregistrement. Pour la version française, je ne sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise habitude de faire ce genre de choses en utilisant la gestion des erreurs mais des fois - plutôt rares il est vrai - il n'y a pas moyen de faire autrement.
S. L.
"Michel Pellegrini" wrote in message news:
Je viens de faire une recherche sur internet.
On dirait que la méthode consacrée pour régler l'erreur 3021 (Me.Bookmark alors que c'est un nouvel enregistrement) n'est pas de mettre un "If" pour vérifier si c'est un nouvel enregistrement, mais de laisser l'erreur là et la traiter (If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente de celle est employée en programmation standard (la programmation d'un exécutable), c'est une façon assez particulière de programmer.
Vercheres QC Canada
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il
s'agit ou non d'un nouvel enregistrement. Pour la version française, je ne
sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise habitude
de faire ce genre de choses en utilisant la gestion des erreurs mais des
fois - plutôt rares il est vrai - il n'y a pas moyen de faire autrement.
S. L.
"Michel Pellegrini" <Michel.Pellegrini@Enter-Net.com> wrote in message
news:eEDs8s9tEHA.1404@TK2MSFTNGP11.phx.gbl...
Je viens de faire une recherche sur internet.
On dirait que la méthode consacrée pour régler l'erreur 3021
(Me.Bookmark alors que c'est un nouvel enregistrement) n'est
pas de mettre un "If" pour vérifier si c'est un nouvel
enregistrement, mais de laisser l'erreur là et la traiter
(If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente
de celle est employée en programmation standard (la programmation
d'un exécutable), c'est une façon assez particulière de programmer.
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il s'agit ou non d'un nouvel enregistrement. Pour la version française, je ne sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise habitude de faire ce genre de choses en utilisant la gestion des erreurs mais des fois - plutôt rares il est vrai - il n'y a pas moyen de faire autrement.
S. L.
"Michel Pellegrini" wrote in message news:
Je viens de faire une recherche sur internet.
On dirait que la méthode consacrée pour régler l'erreur 3021 (Me.Bookmark alors que c'est un nouvel enregistrement) n'est pas de mettre un "If" pour vérifier si c'est un nouvel enregistrement, mais de laisser l'erreur là et la traiter (If Err = 3021 Then)
À moins que le terme "erreur" ait une signification différente de celle est employée en programmation standard (la programmation d'un exécutable), c'est une façon assez particulière de programmer.
Vercheres QC Canada
Raymond [mvp]
Bonjour.
en vba, il n'y a pas d'autres versions que la version US, donc NewRecord. un if doit faire l'affaire: Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if
et ensuite tester par IsNull -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a écrit dans le message de news:
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il s'agit ou non d'un nouvel enregistrement. Pour la version française, je ne sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise habitude de faire ce genre de choses en utilisant la gestion des erreurs mais des fois - plutôt rares il est vrai - il n'y a pas moyen de faire autrement.
S. L.
Bonjour.
en vba, il n'y a pas d'autres versions que la version US, donc NewRecord.
un if doit faire l'affaire:
Dim vrBook As Variant
If Me.NewRecord Then
vrBook = Me.Bookmark
else
vrBook = vbNullChar
end if
et ensuite tester par IsNull
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: eJsIA49tEHA.3972@TK2MSFTNGP15.phx.gbl...
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il
s'agit ou non d'un nouvel enregistrement. Pour la version française, je
ne sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise
habitude de faire ce genre de choses en utilisant la gestion des erreurs
mais des fois - plutôt rares il est vrai - il n'y a pas moyen de faire
autrement.
en vba, il n'y a pas d'autres versions que la version US, donc NewRecord. un if doit faire l'affaire: Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if
et ensuite tester par IsNull -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a écrit dans le message de news:
Pour la version anglaise, c'est la propriété Me.NewRecord qui indique s'il s'agit ou non d'un nouvel enregistrement. Pour la version française, je ne sais pas.
Pour le reste, vous avez raison de dire que c'est une très mauvaise habitude de faire ce genre de choses en utilisant la gestion des erreurs mais des fois - plutôt rares il est vrai - il n'y a pas moyen de faire autrement.
S. L.
Michel Pellegrini
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Ok, merci à Sylvain Lafontaine et Raymond [MVP], ça fonctionne parfaitement de cette façon.
Vercheres QC Canada
(Raymond [mvp])
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Un if doit faire l'affaire:
Dim vrBook As Variant
If Me.NewRecord Then
vrBook = Me.Bookmark
else
vrBook = vbNullChar
end if
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Ok, merci à Sylvain Lafontaine et Raymond [MVP],
ça fonctionne parfaitement de cette façon.
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Ok, merci à Sylvain Lafontaine et Raymond [MVP], ça fonctionne parfaitement de cette façon.
Vercheres QC Canada
Michel Pellegrini
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi) |> Ok, merci à Sylvain Lafontaine et Raymond [MVP], |> ça fonctionne parfaitement de cette façon.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ Enfin, dans ce code, il faut interchanger les deux lignes vrBook. L'important, c'est que Me.Bookmark renvoie une valeur différente (True) si c'est un nouvel enregistrement.
Vercheres QC Canada
(Raymond [mvp])
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Un if doit faire l'affaire:
Dim vrBook As Variant
If Me.NewRecord Then
vrBook = Me.Bookmark
else
vrBook = vbNullChar
end if
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi)
|> Ok, merci à Sylvain Lafontaine et Raymond [MVP],
|> ça fonctionne parfaitement de cette façon.
Post-scriptum
¯¯¯¯¯¯¯¯¯¯¯¯¯
Enfin, dans ce code, il faut interchanger les deux
lignes vrBook. L'important, c'est que Me.Bookmark
renvoie une valeur différente (True) si c'est un nouvel
enregistrement.
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi) |> Ok, merci à Sylvain Lafontaine et Raymond [MVP], |> ça fonctionne parfaitement de cette façon.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ Enfin, dans ce code, il faut interchanger les deux lignes vrBook. L'important, c'est que Me.Bookmark renvoie une valeur différente (True) si c'est un nouvel enregistrement.
Vercheres QC Canada
Raymond [mvp]
ooops, l'erreur fatale, mais tu veilles au grain.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Michel Pellegrini" a écrit dans le message de news: %
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi) |> Ok, merci à Sylvain Lafontaine et Raymond [MVP], |> ça fonctionne parfaitement de cette façon.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ Enfin, dans ce code, il faut interchanger les deux lignes vrBook. L'important, c'est que Me.Bookmark renvoie une valeur différente (True) si c'est un nouvel enregistrement.
Vercheres QC Canada
ooops, l'erreur fatale, mais tu veilles au grain.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Michel Pellegrini" <Michel.Pellegrini@Enter-Net.com> a écrit dans le
message de news: %23bmN4YBuEHA.2300@TK2MSFTNGP09.phx.gbl...
(Raymond [mvp])
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Un if doit faire l'affaire:
Dim vrBook As Variant
If Me.NewRecord Then
vrBook = Me.Bookmark
else
vrBook = vbNullChar
end if
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi)
|> Ok, merci à Sylvain Lafontaine et Raymond [MVP],
|> ça fonctionne parfaitement de cette façon.
Post-scriptum
¯¯¯¯¯¯¯¯¯¯¯¯¯
Enfin, dans ce code, il faut interchanger les deux
lignes vrBook. L'important, c'est que Me.Bookmark
renvoie une valeur différente (True) si c'est un nouvel
enregistrement.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Michel Pellegrini" a écrit dans le message de news: %
(Raymond [mvp]) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Un if doit faire l'affaire:
Dim vrBook As Variant If Me.NewRecord Then vrBook = Me.Bookmark else vrBook = vbNullChar end if ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Moi) |> Ok, merci à Sylvain Lafontaine et Raymond [MVP], |> ça fonctionne parfaitement de cette façon.
Post-scriptum ¯¯¯¯¯¯¯¯¯¯¯¯¯ Enfin, dans ce code, il faut interchanger les deux lignes vrBook. L'important, c'est que Me.Bookmark renvoie une valeur différente (True) si c'est un nouvel enregistrement.