Comment puis-je référence les champs dans les tables à l'aide de VBA dans Access, tels qu'ils peuvent être édités?
Je suis de nouveau à faire de la bd. Jusqu'à présent j'ai un formulaire mis en place comme je l'aime, mais pas de valeurs sont liées b/c j'ai besoin de basculer entre les tables (je pourrais juste ajouter tous les champs de la première table de la seconde table, mais la moitié du point de me faire moi-même était d'apprentissage).
J'ai rencontré deux problèmes.
Tout d'abord, je vais avoir du mal à faire la forme d'accepter que je veux sa source à myTable. Je n'ai aucune idée pourquoi. Il semble assez simple
form.RecordSource="myTable"
Malheureusement, il ne fonctionne pas. Si je le fais, les zones de texte qui sont liées à des champs dans myTable dire d'erreur #ou #nom? au lieu de leur valeur prévue.
Pour essayer de résoudre cela, je suis allé dans les propriétés de la forme et de définir sa source de commande à:
"SELECT * FROM myTable, myTable AS backup_1;"
Je n'ai aucune idée de ce que cela signifie, mais c'est ce que j'avais à faire pour obtenir quelque chose à travailler. C'est mon premier problème - comment puis-je "correctement" associer un db avec une forme sans les manigances et à avoir des références de travail? Je l'ai fait de 3 façons différentes maintenant, on a travaillé pendant un moment puis arrêté, un (form.recordSource=myTable)
n'a tout simplement pas de travail, et l'autre est la première méthode que j'ai mentionnés. Tous me causer des problèmes.
En tout cas, j'ai utilisé le SELECT...
car il est le plus proche de réellement travailler. À partir de là, j'ai défini les zones de texte que je n'ai pas envie de quitter Indépendant comme [myTable.FieldName], et cela a fonctionné. Par programmation, j'ai pu utiliser [myTable.FieldName] pour éditer obtenir l'information à partir d'un domaine particulier à partir d'un enregistrement particulier sans difficulté. Le problème est que je n'arrive pas à le modifier par programmation les données stockées dans ces domaines.
Par exemple, si j'essaie:
txtDisplayField1=[myTable.Field1]
Fonctionne très bien. Mais si j'essaie:
[myTable.Field1] = txtDisplayField1.text
- Je obtenir de l'erreur d'exécution 2448 - "Vous ne pouvez pas affecter une valeur à cet objet." (Ce qui est le plus utile message d'erreur jamais.)
J'ai mentionné précédemment que lors de l'association de mon formulaire avec une table, il y avait une façon qui ont fonctionné au début, mais ensuite arrêté de travailler pour une raison quelconque. À l'origine, j'ai juste tapé:
form.recordsource = myTable
et il a très bien fonctionné. J'ai été en mesure de champs de référence en se référant à eux comme Champ1, etc., sans les crochets. Il a travaillé comme de moi en train de descendre de travail vendredi (gasp - je ne suis pas un programmeur de métier), mais ne fonctionne pas quand je suis entré en. C'est probablement la plus compliquée explication d'un problème qui est humainement possible... mais toute aide serait grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
Vous semble être la lutte contre l'Accès par défaut de conception.
Si vous avez deux tables avec structure identique (vous ne devriez pas dans une base de données bien conçue, mais, bon, des trucs qui se passe), vous pouvez utiliser l'événement OnOpen de la forme à définir la forme de la source. Un exemple très simple (mais pas très user-friendly) façon de le faire est:
La raison que c'est une terrible INTERFACE utilisateur est parce que vous êtes de poser une question Oui/Non, mais la réponse est vraiment "table1" ou "table2." Il est très facile de mal comprendre la question.
Puis tous les contrôles sur votre formulaire doit être lié à la sous-jacentes des champs. Si vous faites cela, vous n'avez pas à écrire de code pour mettre à jour les données: les utilisateurs de changer les données dans le contrôle va changer les données sous-jacentes automatiquement.
De changer la Source d'un formulaire, tandis que le programme est en cours d'exécution est une technique avancée, et devrait être réservé pour une utilisation uniquement par les experts.
Correct, bien que d'origine de SQL est un peu compliqué.
Essayez ceci: