Return Sans GoSub

Résolu/Fermé
Bapti - 15 mai 2020 à 18:11
 Bapti - 19 mai 2020 à 17:57
Bonjour à tous,
Débutant sur access, je viens de faire une BDD de gestion de Clientèle, qui me permet également de faire des devis. Le tout est fait sans ligne de code, je n'utilise que les wizards etc...
Mon formulaire devis me renvoi, seulement après réouverture de la BDD un message d'erreur "Return sans GoSub"

Dans mon formulaire devis simplement les éléments du devis lui-même, un sous-formulaire en lecture seule qui m'affiche 2-3 données sur l'entreprise du client, et un sous-formulaire qui contient les différents éléments de mon devis (à la sélection de ma réf-produit, les champs prix, description etc prennent la valeur du catalogue par défaut)
Cela marche parfaitement la première fois, et toutes les fois suivantes aussi, tant que je n'ai pas fermé ma base.
Dès que je la ré-ouvre et tente d'ajouter un élément dans un devis je reçois le message suivant "Le paramètre de la propriété du champ père est à l'origine de l'erreur suivante : "Return sans GoSub""
(Le champ père de mon Sous-Formulaire est mon N° de Devis)

En plus de cela, lorsque je veux un aperçu de l'état qui découle de mon formulaire devis(Fait à partir d'une requête sur le N°de devis du formulaire devis), au lieu de me l'ouvrir, il m'ouvre une boite de dialogue me demandant le N° de devis...

Après quoi il je dois rentrer manuellement le N° de devis dans ma ligne de SF, pour enfin écrire la ligne. (Si je supprime et ré-insert mon champ N°devis dans le Formulaire principal, le formulaire fonctionne de nouveau, jusqu'à la prochaine fermeture)

Étant donné le message d'erreur, je suppose un paramètre mal réglé sur mon champ N°_devis. Mais je n'ai pas de certitudes. Auriez vous une idée ?

Merci d'avance !

Baptiste




Configuration: Windows / Firefox 76.0

5 réponses

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
15 mai 2020 à 19:28
bonjour, commençons par le second soucis:
si je comprends bien, ton formulaire devis est basé sur une requête dont tu ne donnes pas le nom. que se passe-t'il quand tu ouvres cette requête?
0
Mon Formulaire Devis est basé sur ma table Devis, et appelle un SF en lecture seule basé sur ma table Clients, et un autre SF basé sur la table Elements_devis (qui contient les différents articles du devis).
Par contre mon Etat qui me permet de faire un joli devis imprimable est basé sur une requête (R_devis_pour_etat) dans laquelle j'appelle tous les champs des 3 tables mentionnées plus haut, et ou je mets simplement en critère pour le N°_devis : " [Formulaires]![Devis]![N°_devis] "

Cette erreur n'apparait aussi qu'au ré-allumage de la BDD, avant cela le formulaire complet marche parfaitement. C'est ce qui me fait croire que j'ai ce problème de "paramètre" sur mon champ N°_Devis, qui le fait disparaitre des radars au rallumage, comme si mon formulaire n'avait pas connaissance de sa présence !

Merci !
0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
15 mai 2020 à 20:41
que se passe-t'il si tu ouvres la requête R_devis_pour_etat?
il est préférable de ne pas utiliser les mêmes noms partout, cela complique la compréhension en cas de problème.
0
Si j'ouvre ma base, sans que mon formulaire Devis soit ouvert, alors, j'ai une fenêtre pop'up qui s'ouvre et me demande la valeur de [Formulaires]![Devis]![N°_devis]. Si je le fais lorsque le formulaire Devis est ouvert sur un enregistrement, alors la requête me renvoie les différents éléments du devis ouvert en formulaire.

Si je ferme et ré-ouvre access, alors même lorsque mon formulaire devis est ouvert, si je clique sur ma requête elle me demande la valeur de [Formulaires]![Devis]![N°_devis]. Si je vais sur mon formulaire Devis, puis supprime mon contrôle N°_Devis et le réinsère ensuite, alors ma requête refonctionne.

PS: Pour les noms tu veux dire que ma clé N°_Devis ne devrait pas s'appeler comme ça dans les autre tables ou elle est en réf multiple ?
0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
15 mai 2020 à 21:06
Je suggère ceci:
- ne pas utiliser des noms identiques à des endroits différents, de façon à reconnaître facilement le contexte
- ne pas utiliser de caractères spéciaux dans les noms, ce qui permet aussi de ne pas mettre [] autour des noms
- essaie d'être précis. au début, tu écrivais "il m'ouvre une boite de dialogue me demandant le N° de devis", maintenant, c'est devenu "elle me demande la valeur de [Formulaires]![Devis]![N°_devis]"

- tu mentionnes "le formulaire Devis est ouvert sur un enregistrement", et ensuite "mon formulaire devis est ouvert": et-ce identique?
- comment arrives-tu à la première situation que tu décris (Si je le fais lorsque le formulaire Devis est ouvert), sans tomber dans la deuxième situation (alors même lorsque mon formulaire devis est ouvert)? il me semble que tu ne décris qu'une partie des scénarios.
0
Merci pour les conseils, ok je comprends que mes explications peuvent être confuses :
J'essaye d'éclaircir :
Après avoir conçu mon Formulaire Devis, je le teste, il me permet sans problème de :
- Rentrer des données dans mon Sous_Formulaire_Elements_devis et les enregistrer
- Cliquer sur un bouton qui m'ouvre un état basé sur une requête nommée R_devis_pour_etat
- Ouvrir la requête R_devis_pour_etat, filtré automatiquement sur mon N°_Devis présent sur mon formulaire Devis actif. Naturellement, si je ferme mon formulaire Devis, puis clique sur ma requête, elle ouvre une fenêtre pop-up qui me demande la valeur de [Formulaires]![Devis]![N°_devis] avant d'afficher un résultat.

Cela est le comportement normal et attendu de mon application. Ce comportement perdure tant qu'access est ouvert. Je peux sans problème naviguer dans mon application, le fonctionnement est sans faille.

Si je ferme access, puis le ré-ouvre (sur ma BDD bien sûr) voilà le comportement que j'obtiens :
- Lorsque je souhaite rentrer des données dans mon Sous_Formulaire_Elements_devis. Dès que j'ai rentré mon premier caractère dans un contrôle de ce sous-formulaire, une fenêtre pop-up apparait avec l'erreur suivante "Le paramètre de la propriété du champ père est à l'origine de l'erreur suivante : "Return sans GoSub"". Je peux cliquer sur ok pour fermer l'erreur, si je re-tente la même chose l'erreur ré-apparait. En outre je note que le champ fils (qui reprend le N°_Devis, de mon formulaire Devis) ne s'est pas rempli automatiquement (là où il se remplissait automatiquement dans la première situation, dès lors que je remplissais un autre champ). Le seul moyen de remplir le sous formulaire est de remplir manuellement le champ fils de ce sous-fourmulaire
-Lorsque je souhaite cliquer sur le bouton qui m'ouvre un état basé sur une requête nommée R_devis_pour_etat, ouvre une fenêtre pop-up qui me demande la valeur de [Formulaires]![Devis]![N°_devis], si je remplis le champ avec une valeur de N°_Devis (n'importe quelle valeur existante dans ma table) il m'ouvre mon état correspondant au N°_Devis appelé.
- Si je cherche à ouvrir la requête R_devis_pour_etat elle ouvre une fenêtre pop-up qui me demande la valeur de [Formulaires]![Devis]![N°_devis] avant d'afficher un résultat, que mon formulaire devis soit ouvert ou non.

Maintenant, si je vais dans mon formulaire Devis en mode création, supprime le contrôle N°_Devis de mon formulaire, puis le ré-ajoute, l'ensemble du système se remet à fonctionner selon son comportement normal et attendu.

À la prochaine réouverture, il beuguera de nouveau.
0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
16 mai 2020 à 10:04
peux-tu, après avoir pris une copie de ta base (par sécurité), faire "compacter/réparer" ton fichier, puis tester à nouveau?
si cela ne fonctionne pas, peux-tu partager ton fichier?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour Yg_be
J'ai compacté/réparer mon fichier, sans succès.
Mais j'ai également enregistrer ma base en tant que base exécutable, et dans ce cas-là le formulaire s'exécute parfaitement. Ce qui est in-fine ce qu'il me fallait. Merci pour l'aide en tout cas !
0