Question : La méthode alternative de mise en référence forme dans un projet d'accès ?

Il y a quelques années où j'ai fait des 2003 à accès rapide projeter qu'impliqué deux ou trois commandes faites sur commande de treeview de tiers qui ont été employées sur une série de formes dans tout le projet. Je suis venu d'un environnement de .NET ainsi j'ai commencé à m'en appliquer méthodologie classe-basée au projet d'accès. le secteur du

One avec lequel j'ai expérimenté mettait en référence des formes et des commandes par une structure de classe faite sur commande. J'ai recueilli une série de fonctions publiques dans un module de classe qui a renvoyé une référence à une forme ou à une commande spécifique. Toutes les fois que j'ai dû mettre en référence une commande spécifique que j'ai instancié un exemple de la classe, a appelé la fonction appropriée, et a employé la référence retournée pour accéder à la commande d'UI. le

This a semblé ne fonctionner sans aucun problème est-ce que mais je me demandais si les structures de classe sont relativement inefficaces dans l'accès ? le

j'aime la flexibilité et l'organisation d'employer des classes comme usines de référence pour des formes et des commandes, par opposition à la notation plus commune de « coup », mais s'il ralentit le projet vers le bas au temps d'exécution puis nie-t-il les avantages du flexibility.

Has que n'importe qui a employé autrement ce genre de forme et de commande mettant en référence dans l'accès ? Je discute using ceci sur un nouveau projet d'accès qui implique tout à fait quelques formes et controls.
class= de

Réponse : La méthode alternative de mise en référence forme dans un projet d'accès ?

<>>

 Encore, votre ne pas aller pouvoir faire cela ici de la mode typique d'OOP.  Vous ne pouvez pas avoir un objet de classe basse, puis une sous-classe il et la modifier.  Access/VBA n'en soutient aucune de cela.

Vous pouvez créer une classe de boîte à textes et des événements d'évier avec elle et présenter de nouvelles propriétés et méthodes, mais ce sera pareil pour chaque commande dans le $$etAPP à moins que vous ayez les classes séparées.

<>>

  Comme j'ai dit, il semble que je manque de la vision car je toujours vraiment ne comprends pas ce qu'il est votre aller ensuite. Ceci :

Form_Load secondaire privé ()

GetForm (FORM_MAIN). Légende = « corde de légende d'essai »

Faible TempControl comme commande
Placer TempControl = GetControl (FORM_MAIN, FORM_MAIN_TEXBOX_1)

Avec TempControl
   .SetFocus
   . Texte = « essai »
Extrémité avec

Placer TempControl = rien

Finir le sous-marin

Juste n'a pas du sens pour moi dans l'accès.  Il serait juste comme simple et le clairifiant pour faire :

Form_Load secondaire privé ()

Me.Caption = « corde de légende d'essai »

Me.Text0.SetFocus
Me.Text0.Text = « essai »

Sous-marin d'extrémité

et sans tous les frais généraux supplémentaires.  Ainsi je ne vois aucun avantage à employer GetForm (), GetControl () etc. juste pour obtenir une référence à quelque chose.  Peut-être ce qui est absent est celui normalement, un réalisateur appellera une commande n'importe quoi de pareil :

txtBirthDate
cbxHIPPAOnFile
lstSelectPatient

pour la nomination des commandes et de d'autres l'objet (using un préfixe), avec lequel il est plus facile travailler et aide vraiment avec les corvées de modification et d'entretien.

Et jusque les routines que vous avez, aucune raison de faire une boucle par toutes les formes ou commandes comme cela.  Faire juste :

Fonction publique GetForm (sFormName de ByVal) comme forme

   Sur l'erreur GetForm_Error GoTo

   Placer GetForm = formes (le strFormName)

GetForm_Exit :
  Sortir la fonction

GetForm_Error :
  Placer GetForm = rien
  Reprendre GetForm_Exit

Finir la fonction

  Comme vous pouvez voir, Access/VBA a déjà des formes collection et vous pouvez employer la syntaxe :

 Formes (strFormName)

 pour obtenir une référence à employer une variable de corde contenant le nom.  Et il a des collections pour juste environ chaque autre objet aussi bien.

 Au sujet du seul endroit où il a exigé pour faire ce que votre essai de faire est quand vous devez avoir des exemples multiples d'une forme.  Cela doit typiquement être manipulé avec quelque chose comme un GetForm (), qui maintiendrait une collection de formes ouvertes car Access/VBA ne manipulera pas cela là-dessus est de posséder.  Mais dehors de cela, il y a rien d'autre que je peux penser à où il vaut les frais généraux.

JimD.

Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us