Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Garder la trace des formulaires utilisés

5 réponses
Avatar
Francis
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en
formulaire que j'ouvre lors de l'utilisation de ma base, de façon à
faire le chemin en sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis

--
Francis
fhgc@wanadoudou.fr
LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.

5 réponses

Avatar
Eric
Bonjour,

J'ai pas ça sous la main
Pour récupérer le nom du formulaire actif, Me.Name non ?


Francis a écrit :
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en
formulaire que j'ouvre lors de l'utilisation de ma base, de façon à
faire le chemin en sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Francis
Bonsoir Eric,
Merci. Je me demande pourquoi j'allais chercher midi à 14 heures :/
Avec ça, je pense que je devrais pouvoir faire quelque chose. Je te
dirai.
@+
Francis

Eric a émis l'idée suivante :
Bonjour,

J'ai pas ça sous la main
Pour récupérer le nom du formulaire actif, Me.Name non ?


Francis a écrit :
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en formulaire
que j'ouvre lors de l'utilisation de ma base, de façon à faire le chemin en
sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis






--
Francis

OBSERVATION DE ZENONE
L'autre file va toujours plus vite.
VARIATION DE O'BRIEN SUR L'OBSERVATION DE ZENONE
Si tu changes de file, celle que tu viens de quitter deviendra alors
la plus rapide.
Avatar
Francis
Eric a exprimé avec précision :
Bonjour,

J'ai pas ça sous la main
Pour récupérer le nom du formulaire actif, Me.Name non ?


Francis a écrit :
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en formulaire
que j'ouvre lors de l'utilisation de ma base, de façon à faire le chemin en
sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis






Bonjour Eric,

Te voyant déjà à la tâche, ce matin, je te livre le fruit de mon
travail d'hier soir.
Pour garder la trace des formulaires par lesquels je suis passé, mon
idée a été de créer une chaîne contenant, à la queue leu-leu, les noms
de formulaires par lesquels je suis passé, précédés par leur nombre de
caractères. Ce qui me permet, en sens inverse, de revenir en arrière
par le même chemin. Pour cela, j'ai procédé de la façon suivante:

- j'ouvre, en acHidden, un formulaire que j'ai appelé "critères" et qui
contient les champs indépendants "parcours" et "forme"
- chaque fois que je déclenche une procédure événementielle pour ouvrir
un autre formulaire, ou état, je lance la fonction:
Forms![critères].parcours = fnAller(Me.Name)
et je ferme le formulaire
- quand je quitte le formulaire où je suis, la procédure événementielle
sur fermeture me fait la fonction
Forms![critères].parcours = fnRetour(Me.Name)
qui me récupère dans "forme" le nom du formulaire où j'étais avant, que
j'ouvre par:
DoCmd.OpenForm Forms![critères].forme
et ainsi de suite.
Voici mes fonctions Aller et Retour

Public Function fnAller(strForme As String)
Dim nn As String
Dim n As Integer
n = Len(strForme)
If n < 10 Then nn = "0" & n Else nn = n
Forms![critères].parcours = Forms![critères].parcours & nn &
strForme
End Function

Public Function fnRetour(strForme As String)
Dim forme As String
Dim n As Integer
strForme = Forms![critères].parcours
n = CStr(Left(strForme, 2))
forme = Mid(strForme, 1, n + 2)
forme = Mid(forme, 3, n) ' je récupère le nom du formulaire
précédent
Forms![critères].forme = forme
Forms![critères].parcours = Mid(strForme, n + 3, Len(strForme) - n
- 2) ' je le retire de la chaîne qui le contenait avec les autres
End Function

C'est sûrement perfectible, et surtout n'hésite pas à me faire part de
tes idées, mais ça marche.

Bonne journée, et à+

Francis

--
Francis

LOI DE BOOB
Quel que soit l'objet, il sera trouvé dans le dernier endroit dans
lequel on l'aura cherché.
Avatar
Eric
Bonjour Francis,

Lu rapidement.

Dans la fonction fnAller(), tu peux faire l'économie du test
If n < 10 Then nn = "0" & n Else nn = n
en mettant simplement :
nn=Format(n,"00")
(je suppose que t'as pas de nom de formulaire dépassant 99 caractères)

Dans la fonction fnRetour()
Mettre
n = CInt(Left(strForme, 2))
au lieu de
n = CStr(Left(strForme, 2))

Francis a écrit :
Eric a exprimé avec précision :
Bonjour,

J'ai pas ça sous la main
Pour récupérer le nom du formulaire actif, Me.Name non ?


Francis a écrit :
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en
formulaire que j'ouvre lors de l'utilisation de ma base, de façon à
faire le chemin en sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis






Bonjour Eric,

Te voyant déjà à la tâche, ce matin, je te livre le fruit de mon travail
d'hier soir.
Pour garder la trace des formulaires par lesquels je suis passé, mon
idée a été de créer une chaîne contenant, à la queue leu-leu, les noms
de formulaires par lesquels je suis passé, précédés par leur nombre de
caractères. Ce qui me permet, en sens inverse, de revenir en arrière par
le même chemin. Pour cela, j'ai procédé de la façon suivante:

- j'ouvre, en acHidden, un formulaire que j'ai appelé "critères" et qui
contient les champs indépendants "parcours" et "forme"
- chaque fois que je déclenche une procédure événementielle pour ouvrir
un autre formulaire, ou état, je lance la fonction:
Forms![critères].parcours = fnAller(Me.Name)
et je ferme le formulaire
- quand je quitte le formulaire où je suis, la procédure événementielle
sur fermeture me fait la fonction
Forms![critères].parcours = fnRetour(Me.Name)
qui me récupère dans "forme" le nom du formulaire où j'étais avant, que
j'ouvre par:
DoCmd.OpenForm Forms![critères].forme
et ainsi de suite.
Voici mes fonctions Aller et Retour

Public Function fnAller(strForme As String)
Dim nn As String
Dim n As Integer
n = Len(strForme)
If n < 10 Then nn = "0" & n Else nn = n
Forms![critères].parcours = Forms![critères].parcours & nn & strForme
End Function

Public Function fnRetour(strForme As String)
Dim forme As String
Dim n As Integer
strForme = Forms![critères].parcours
n = CStr(Left(strForme, 2))
forme = Mid(strForme, 1, n + 2)
forme = Mid(forme, 3, n) ' je récupère le nom du formulaire précédent
Forms![critères].forme = forme
Forms![critères].parcours = Mid(strForme, n + 3, Len(strForme) - n -
2) ' je le retire de la chaîne qui le contenait avec les autres
End Function

C'est sûrement perfectible, et surtout n'hésite pas à me faire part de
tes idées, mais ça marche.

Bonne journée, et à+

Francis




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Francis
Re,
Bien pris en compte tes propositions.
Bien sûr, mes noms de formulaire ne dépassent pas 100 caractères.
Mais, entre nous, c'est quand même un peu besogneux à mettre en place
... Je me limiterai aux enchaînements les plus utilisés.
Bonne journée

Eric a exprimé avec précision :
Bonjour Francis,

Lu rapidement.

Dans la fonction fnAller(), tu peux faire l'économie du test
If n < 10 Then nn = "0" & n Else nn = n
en mettant simplement :
nn=Format(n,"00")
(je suppose que t'as pas de nom de formulaire dépassant 99 caractères)

Dans la fonction fnRetour()
Mettre
n = CInt(Left(strForme, 2))
au lieu de
n = CStr(Left(strForme, 2))

Francis a écrit :
Eric a exprimé avec précision :
Bonjour,

J'ai pas ça sous la main
Pour récupérer le nom du formulaire actif, Me.Name non ?


Francis a écrit :
Bonjour à tous,
Voici mon problème pour ce soir.
Je voudrais conserver la trace du cheminement de formulaire en formulaire
que j'ouvre lors de l'utilisation de ma base, de façon à faire le chemin
en sens inverse au fur et à mesure que j'en referme.
Si ça existe déjà qquepart, dites moi où je peux me procurer ça.
D'autre part, quelle est le code qui permet de récupérer le nom d'un
formulaire dans une variable?
Merci pour tout cela et @+
Francis






Bonjour Eric,

Te voyant déjà à la tâche, ce matin, je te livre le fruit de mon travail
d'hier soir.
Pour garder la trace des formulaires par lesquels je suis passé, mon idée a
été de créer une chaîne contenant, à la queue leu-leu, les noms de
formulaires par lesquels je suis passé, précédés par leur nombre de
caractères. Ce qui me permet, en sens inverse, de revenir en arrière par le
même chemin. Pour cela, j'ai procédé de la façon suivante:

- j'ouvre, en acHidden, un formulaire que j'ai appelé "critères" et qui
contient les champs indépendants "parcours" et "forme"
- chaque fois que je déclenche une procédure événementielle pour ouvrir un
autre formulaire, ou état, je lance la fonction:
Forms![critères].parcours = fnAller(Me.Name)
et je ferme le formulaire
- quand je quitte le formulaire où je suis, la procédure événementielle sur
fermeture me fait la fonction
Forms![critères].parcours = fnRetour(Me.Name)
qui me récupère dans "forme" le nom du formulaire où j'étais avant, que
j'ouvre par:
DoCmd.OpenForm Forms![critères].forme
et ainsi de suite.
Voici mes fonctions Aller et Retour

Public Function fnAller(strForme As String)
Dim nn As String
Dim n As Integer
n = Len(strForme)
If n < 10 Then nn = "0" & n Else nn = n
Forms![critères].parcours = Forms![critères].parcours & nn & strForme
End Function

Public Function fnRetour(strForme As String)
Dim forme As String
Dim n As Integer
strForme = Forms![critères].parcours
n = CStr(Left(strForme, 2))
forme = Mid(strForme, 1, n + 2)
forme = Mid(forme, 3, n) ' je récupère le nom du formulaire précédent
Forms![critères].forme = forme
Forms![critères].parcours = Mid(strForme, n + 3, Len(strForme) - n - 2)
' je le retire de la chaîne qui le contenait avec les autres
End Function

C'est sûrement perfectible, et surtout n'hésite pas à me faire part de tes
idées, mais ça marche.

Bonne journée, et à+

Francis






--
Francis

LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.