sur ce formulaire d'accès, je travaille sur j'ai une variable globale qui prend sa valeur d'une autre forme sur son événement Form_load. Pour une raison quelconque inconnue, la variable "perd sa valeur" (devient = "") après quelques écoulements de temps ou un événement survient. Je n'ai pas pu remarquer quoi que ce soit en particulier qui déclenche ce comportement. Les variables globales sont-elles réinitialisées après un certain temps de "inactivité" sur la forme?
Voici comment je définit les variables globales dont je parle: p>
5 Réponses :
Je ne vois rien dans cette déclaration qui me dit que c'est une variable globale. Vous définissez des variables globales au-dessus de tous les sous-marins / fonctions et ci-dessous une instruction Comparaison des options dans un module, en indiquant: Toute autre variable est seulement bonne jusqu'à ce que le sous ou la fonction soit terminé. P > En outre, les variables globales doivent être déclarées sur un module approprié. Vous ne pouvez pas les déclarer sur le module d'un formulaire. P> p>
Ce mot clé "global" ne semble pas exister. Je l'ai mis au sommet et l'a déclarée comme telle: DIM PasswordSyBase en tant que chaîne code>
Essayez Public PasswordSyBase en tant que chaîne. Laisser sortir le sombre
Global CODE> est un héritage des versions antérieures de VB et est remplacée par
public code>. Cela l'accepte toujours (capitalisant le G si vous le tapez en minuscules) mais si vous cliquez sur ce mot et appuyez sur F1, il vous amène à l'aide pour la relevé public code>.
une solution alternative (seulement 2007 et à partir de 2007) J'ai commencé à utiliser est tempvars code> au lieu de globaux dans la situation impair, je "avait besoin" quelque chose de global. C'est une collection et persiste pendant toute la durée de l'application que si vous le libérez explicitement. Donc, dans certains cas, je sens que c'est plus utile que les globaux et dans certains cas pire.
TempVars.Add myVarName, myVarValue ' To initialize
TempVars.Item(myVarName) = newVarValue ' To reference and assign a new value
TempVars.Remove(myVarName) ' To release
J'ai suscité mais je ne peux pas accepter car je dois utiliser Access 2000 (désolé je ne l'ai pas spécifié plus tôt). Grande réponse pour 2007+ cependant. Je vais certainement garder une note mentale de cela.
Poste ancien mais toujours utile, Tempvars persistent également après application.Quit (tous ces événements de déchargement: d) Mais avant la fermeture complète que les globaux ne le font pas.
Vous pouvez créer une "fausse" variable globale par p>
L'inconvénient est qu'une zone de texte non liée peut ne pas vous donner un type de données spécifique que vous souhaitez p>
Les deux manières autour de cela sont p>
Dans votre code, convertissez explicitement la zone de texte au type de données lorsque vous référencez la variable globale. E.g clng (form_frmglobal.tvar1) p> li>
Une autre option consiste à créer une table à une ligne et à lier vos boîtes de texte sur votre formulaire masqué à la table, de sorte que vos types de données sont appliqués p> li> ul>
Un bonus de cette méthode est que vous pouvez utiliser pour le stockage persistant entre les sessions CAVEAT: Assurez-vous que cette table est locale à un seul utilisateur uniquement, dans le fichier de base de données avant (ne veut pas la mettre dans la base de données arrière en raison des multi-utilisateurs qui s'écrochaient mutuellement). Cela suppose que vous utilisez des bases de données séparées de l'extrémité avant + de l'extrémité arrière, la distribution de l'extrémité avant de chaque poste de travail de l'utilisateur. P>
Cela peut aider: https://accessexperts.com/blog/2011/01/ 12 / Multi-session-Global-Variables / Juan Soto explique comment utiliser une table locale pour garder les variables et comment les appeler en cas de besoin. Cela peut servir votre objectif en 2000 puisque Tempvars n'est pas une option. Vous pouvez toujours supprimer les variables "à proximité" de la base de données de sorte que UID et PWD ne soient pas conservés. P>
J'espère que les visiteurs voient ce post, car il fournit une pièce supplémentaire importante. P>
Même si vous déclarez une variable globale, il apparaît que - dans le cas où vous définissez la valeur de cette variable dans un module de formulaire - cette valeur est perdue lorsque vous déchargez le formulaire. P>
La solution (dans mon cas) était aussi simple que de remplacer: p>
Décharger moi p>
... avec ... p>
moi.hide p>
Les variables (et les objets) que j'ai définies dans ce module de code ont ensuite conservé leurs valeurs via toute la durée de vie de l'instance d'application. P>
Merci pour cela - je fermais ma forme principale manuellement pendant les tests (quelque chose de régulier ne peut pas faire) et je me demandais pourquoi mes variables mondiales ont continué à désapprendre. Sera plus prudent avec cela à l'avenir!
Quelle est la durée de vie d'une variable globale dans Excel VBA?