OVH Cloud OVH Cloud

Non Bookmarkable

7 réponses
Avatar
Michel Pellegrini
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 ?

Merci à l'avance.

Michel.Pellegrini@Enter-Net.com
Vercheres QC Canada

7 réponses

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




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



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