Question

J'ai été recruté pour travailler sur un formulaire pour les spécimens de suivi. Chaque échantillon est associé à un sujet; chaque échantillon possède également un emplacement particulier dans une boîte de rangement 9 x 9. Pour faciliter la saisie des données, je pense que ce serait mieux si la forme d'accès en miroir de la boîte elle-même (et les formulaires papier qui seront utilisés pour entrer des données dans Access): neuf colonnes de neuf lignes, chaque élément étant constitué essentiellement d'un texte boîte pour l'ID de l'échantillon. Ceci est fondamentalement la façon dont je l'aime regarder:

text alt

Ainsi, la personne saisie de données serait essentiellement taper dans les ID de numéro de boîte et spécimen, puis cliquez sur « Créer les enregistrements » pour faire apparaître tous les enregistrements dans l'existence (vous pouvez voir d'autres choses qui se passent ici, mais ce n'est pas vraiment important droit maintenant). Je ne suis pas vraiment sûr de la meilleure façon de coder cela, cependant. En ce moment, le processus mieux que je peux penser est à: 1) exécuter une requête d'insertion pour créer la boîte si elle n'existe pas, 2) exécuter une requête d'insertion pour créer le sujet (personne), si elle n'existe pas et 3) exécuter une requête d'insertion pour chaque échantillon, coder en dur dans sa rangée et de colonne (par exemple box_col = 'A', box_row = '1').

Note: le sujet et l'ID spécimen serait à la fois être analysé hors du champ ID - il est maladroit, pas mon idée, mais c'est la façon dont il est mis en place. Je peux gérer cela, cependant.

Il est certainement une bidouille, mais je ne suis pas sûr de ce que d'autre à faire et la plupart de ce que j'ai googlé jusqu'à n'a pas été pertinente à la création-enregistrements multiples à partir d'une seule forme. Y a-t-il une meilleure manière de faire cela? Dois-je simplement abandonner l'idée et aller avec une approche plus traditionnelle liée subform? Je serais très reconnaissant de vos idées et suggestions. Merci beaucoup.

Était-ce utile?

La solution

Cela pourrait être tout fait sous une forme de sous - cependant, je suppose que la simplicité (moins de clics, l'expérience utilisateur plus facile, et l'intuition) que vous avez conçu pour que l'utilisateur final voit tout ce qu'il / elle a besoin d'entrer. Il n'y a rien de mal à ce faire de cette façon. Une fois que les données sont tous entrés juste un bouton sur la forme qui fait les insertions multiples à la fois. Commencez à 1 et comprennent 9 itérations à chaque fois que l'émission d'une nouvelle déclaration de INSERT.

Une fois la déclaration terminée Personnellement, je mis une marque peu à cocher à côté de chaque ligne de sorte que si un insert succeded il vérifier vrai, faux d'autre. Vous pourriez être astucieux et utiliser une image verte / image rouge. Une fois qu'il a terminé le processus tous les champs doivent être effacés permettant l'entrée supplémentaire.

Je ne vois pas un problème avec ce que vous avez.

Autres conseils

FRIG. Je viens de perdre dix minutes de frappe. Voilà pourquoi je ne me soucie pas des formulaires basés sur le Web. Bien être juste c'est la première fois que cela arrive sur StackOverflow.

Avez-vous vraiment besoin de voir les données plus tard dans le même format que celui entré. S'ils peuvent simplement voir subforms réguliers qui est au moins la moitié du travail que vous ne avez plus besoin de faire des mises à jour de ce formulaire.

Notez également qu'il ya une amaximum à vie de 768, si je me souviens bien, les contrôles par formulaire. 9 x 9 x 2 est 162 et vous serez ok là. Toutefois, si vous décidez de supprimer et de recréer beaucoup de cotrols vous pourriez être en difficulté. Si vous ne frappez cette limite, je pense que l'enregistrement du formulaire sous un nom distinct doit remettre le compteur.

Notez que vous pouvez utiliser la construction suivante pour faire référence à des contrôles et rendre la vie plus facile.

Me.Controls("abc" & Row & column) 

Par exemple, dans l'après mise à jour du contrôle de type vous pouvez utiliser

call InsertRecords(3, "B")

sub InsertRecords(row as integer, Column as string)
....
cboTypeValue = Me.Controls("cboTypeID" & Row & Column) 
....

Cela pourrait être utilisé comme une sorte de contrôles d'accès natif uniquement grille.

Si quelqu'un posterais un exemple de la façon de créer subform personnalisée non liée à la ligne pour chaque enregistrement non consolidé et un code à boucle et enregistrer sur les tables serait tout simplement génial.

Il ne serait pas aussi beaucoup de contrôle et il n'aurait pas de limites par le nombre de champs sur le formulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top