Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 18h57   #1
Membre du Club
 
Inscription : octobre 2006
Messages : 138
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 138
Points : 58
Points : 58
Envoyer un message via MSN à vandrie
Par défaut Erreur lors de l'ajout d'un enregistrement

Bonjour,

Dans un sous formulaire affiché à l'écran, j'ai créé un bouton pour ajouter un nouvel enregistrement en remplissant quelques champs par des valeurs précises. Pour cela, j'utilise la commande :

Code :
Docmd.GotoRecord ,,acRecNew
Si la fiche comporte déjà un enregistrement, ça fonctionne. Si la fiche est vierge j'ai une erreur comme quoi, la base ne peut pas atteindre l'enregistrement. J'ai modifié ma commande en spécifiant le formulaire et son nom :

Code :
Docmd.GotoRecord acForm,"MonForm",acRecNew
Et là, la base me dit que le formulaire n'est pas ouvert !!
Alors que je le vois à l'écran et que j'y ai accès ...

Est-ce normal ?
vandrie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 22h40   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,
Citation:
Envoyé par vandrie Voir le message
Code :
Docmd.GotoRecord acForm,"MonForm",acRecNew
Et là, la base me dit que le formulaire n'est pas ouvert !!
Alors que je le vois à l'écran et que j'y ai accès ...

Est-ce normal ?
Si MonForm est le formulaire encapsulé sous forme de sous-formulaire, ça me paraît normal.
Access ne voit que les formulaires ouverts en tant que formulaires (collection Forms).

Tu peux tenter d'ignorer l'erreur
Code :
1
2
3
4
5
6
7
8
9
On Error Resume Next
Docmd.GotoRecord ,,acRecNew
On Error Goto 0
' Teste si on est bien sur un nouvel enregistrement
If Me.NewRecord Then
' ...
Else
' On n'est pas sur un nouvel enregistrement
End If
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h08   #3
Membre du Club
 
Inscription : octobre 2006
Messages : 138
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 138
Points : 58
Points : 58
Envoyer un message via MSN à vandrie
Citation:
Si MonForm est le formulaire encapsulé sous forme de sous-formulaire, ça me paraît normal.
Access ne voit que les formulaires ouverts en tant que formulaires (collection Forms).
Cela explique pourquoi Access ne voit pas mon formulaire ouvert puisqu'effectivement, c'est la source du sous-formulaire cadre qui lui, est ouvert.

Alors j'ai testé cette solution qui donne satisfaction après maintes tentatives :
Pour remplacer Me.Requery qui ne fonctionne pas si le formulaire est vide (mais qui fonctionne quand il y a au moins un enregistrement), j'ai tapé ça :

Code :
1
2
3
4
5
6
 
Docmd.Echo(False)
Me.RecourdSource=MaRequêteSourceDuSFormulaire
Me.Filter=MonFiltre
Me.FilterOn=True
Docmd.Echo(True)
Les commande Echo servent à ne pas voir tous les enregistrements défiler puis disparaître.

Je peux maintenant tester si mon sous-formulaire est vide avant de lancer Me.Requery et selon le résultat, mettre le code ci-dessus ou Requery ...

En fait, j'ai l'impression que l'ajout d'un nouvel enregistrement met à jour certains champs de certaines tables. Comme la requête possède des relations, et que toutes les tables ne sont pas "à jour" au moment du requery, les relations ne sont plus bonnes ......... En tout cas, le message correspond exactement à celui que donnerait une requête dans laquelle il y a un champ non renseigné. Accès demande la valeur du champ .....

Mon astuce fonctionne mais cela reste bizarre comme bidouille.
Si quelqu'un connaissait un tutoriel qui traite des objets actifs, chargés, ouverts etc ... je suis preneur. C'est pas la première fois que je m'y perds. Pour moi, ce que je vois à l'écran est ouvert et actif ... mais apparemment, c'est pas ça du tout !


Merci pour la réponse.
vandrie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h36.


 
 
 
 
Partenaires

Hébergement Web