Pas d'enregistrement courant ???

Le
Isabelle ex Isa :-)
Bonjour

qui peut m'expliquer

J'ai créer un bouton pour supprimer un enregistrement dans un
formulaire et je voudrais après la suppression de cet enregistrement
que la section Détail soit invisible. J'ai donc fait ceci

Private Sub Commande124_Click()
On Error GoTo Err_Commande124_Click

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Section(acDetail).Visible = False

Exit_Commande124_Click:
Exit Sub

Err_Commande124_Click:
MsgBox Err.Description
Resume Exit_Commande124_Click

End Sub

Mais j'ai un message d'Access "Pas d'enregistrement courant"

Késako ? Que manque -t-il dans mon code ?

Que veut dire :
acEditMenu, 8, ?
et
acEditMenu, 6, ?

Merci d'avance
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
Gloops
Le #6333461
Bonjour belle Isa,

Ah oui, mais cette erreur, elle s'est exécutée sur quelle instruction ?

En voilà une grave question, à laquelle la réponse apporterait un
éclairage à ton problème.

D'autant qu'a priori je ne devine pas, voilà qui me rappelle le conseil
qui m'a été prodigué il y a quelques jours de préférer DoCmd.Ru nCommand
suivi d'une constante avec un nom évocateur, plutôt que DoMenuItem.

Alors j'en reviens à mon histoire de procédure d'erreur.

J'ai l'habitude de mettre quelque chose qui ressemble à ça :

Err:
MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _
vbCrLf + Err.Description,,"nom du module.Nom de la procédure"
If ExisteFormulaire("frmTest") Then
Stop
Resume
End If


Pour exploiter ça, bien entendu, il faut créer une procédure
ExisteFormulaire. Il y a deux moyens pour ça, soit on parcourt tous les
formulaires ouverts dans une boucle et on compare leurs noms à
l'argument, soit on utilise Application.SysCmd acSysCmdGetObjectState
(d'ailleurs, je trouve que l'aide de ceci était plus facile à trouver
avec les versions précédentes d'Access).

Le résultat est qu'une fois que le message a été affiché, on test e
l'existence du formulaire frmTest. Par défaut, il n'est pas ouvert, don c
c'est terminé, l'utilisateur sait qu'il y a un problème dans tel modu le,
telle procédure, il peut faire remonter l'information. J'ai en réserv e
un formulaire d'affichage de message dans une zone de texte, avec un
bouton Copie qui l'envoie dans le presse-papiers. Bien plus facile à
transférer dans une messagerie, on risque moins de se retrouver avec de s
copies d'écran au format bmp 24 bits plein écran, pour juste avoir le
message d'erreur.

Une fois que l'information est remontée au développeur, il ouvre le
formulaire frmTest, lequel contient juste un bouton de fermeture,
exécute la procédure dans des conditions aussi proches que possible d e
celles décrites, et lorsque l'erreur s'exécute, après affichage du
message, le code s'arrête sur Stop. En pressant deux fois sur F8, on se
retrouve sur l'instruction qui a généré l'erreur, ce qui en géné ral
permet d'y voir plus clair.

Tu remarqueras que j'ai utilisé une syntaxe qui passe lors d'une
migration d'Access 95 à Access 97, laquelle ne gère pas les conversio ns
automatiques des Variant, et donc refuse les concaténations par "&".

Par ailleurs j'ai simplifié en n'introduisant pas de traduction du mess age.
__________________________________________________
Isabelle ex Isa :-) a écrit, le 21/11/2007 14:41 :
Bonjour

qui peut m'expliquer

J'ai créer un bouton pour supprimer un enregistrement dans un
formulaire et je voudrais après la suppression de cet enregistrement
que la section Détail soit invisible. J'ai donc fait ceci

Private Sub Commande124_Click()
On Error GoTo Err_Commande124_Click

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Section(acDetail).Visible = False

Exit_Commande124_Click:
Exit Sub

Err_Commande124_Click:
MsgBox Err.Description
Resume Exit_Commande124_Click

End Sub

Mais j'ai un message d'Access "Pas d'enregistrement courant"

Késako ? Que manque -t-il dans mon code ?

Que veut dire :
acEditMenu, 8, ?
et
acEditMenu, 6, ?

Merci d'avance



Gloops
Le #6333441
Gloops a écrit, le 21/11/2007 15:10 :
Err:
MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _
vbCrLf + Err.Description,,"nom du module.Nom de la procédure"
If ExisteFormulaire("frmTest") Then
Stop
Resume
End If




Je promets qu'à la saisie, j'avais une indentation impeccable !

Publicité
Poster une réponse
Anonyme