2013-07-11 2 views
1

Dans mon formulaire, j'ai un sous-formulaire qui affiche A, B, C. Ensuite, l'information C est affichée dans la zone de texte. L'utilisateur devrait avoir la possibilité de modifier ces données afin de modifier les données dans la base de données.Modification des données de la base de données dans la zone de texte qui sont extraites du sous-formulaire

Je peux afficher les informations C dans la zone de texte en fonction de ce sous-formulaire. Cependant, il n'est pas modifiable, il est écrit: "Le contrôle ne peut pas être édité, il est lié à l'expression" ". Il me semble qu'il est impossible d'éditer les données parce qu'elles ne proviennent pas directement de la base de données mais de la sous-forme, donc je fais une requête spéciale qui prend les données directement de la base de données mais je perds un événement basé sur la sélection enregistrement correct du sous-formulaire (il n'y a que les événements onEnter et onExit)

Est-il possible de faire de telles choses?

+0

La table de données existe-t-elle dans MS Access, est-ce une table liée ou les données proviennent-elles d'une requête? – Lisa

+0

sous-formulaire est créé à partir d'une requête basée sur existant dans les tables MS Access. – galvanize

+0

Si la réponse ci-dessous ne résout pas votre problème, vérifiez les raisons supplémentaires pour lesquelles votre jeu d'enregistrements n'est peut-être pas mis à jour: http://rogersaccessblog.blogspot.com/2009/11/this-recordset-is-not-updateable-why. html – Lisa

Répondre

0

Si vous utilisez un jeu d'enregistrements pour remplir ou modifier quoi que ce soit, assurez-vous que vous utilisez les .Edit et .Update pour modifier une cellule existante dans une rangée.

Dim myR as Recordset 

Set myR = CurrentDb.OpenRecordset("Table_Name_Here", dbOpenDynaset) 

'use a .FindFirst method to find the row you want to modify 
'or modify the Recordset to pull a SELECT statement instead of the whole table 

myR.Edit 
myR![Field_to_edit] = Forms![main form name]![subform control name].Form![control name] 
myR.Update 

Set myR = Nothing 
+0

Après avoir affiché les données du sous-formulaire dans la zone de texte, je ne peux rien y écrire. Ça a l'air d'être verrouillé. Les données dans la zone de texte sont écrites par ControlSource = [subForm]! [Colonne] – galvanize

+0

J'ai reçu Message "Le contrôle ne peut pas être modifié, il est lié à l'expression '[subFrom]! [Colonne]" – galvanize

+0

Les données de' C 'sont affiché dans les deux champ de texte C dans le sous-formulaire, et également affiché dans le formulaire principal dans un champ de texte? Désolé, je pensais que vous aviez juste besoin des informations du sous-formulaire pour éditer les données dans le tableau. – Grant

1

Vous pouvez ajouter un deuxième sous-formulaire pour contenir la zone de texte C. Lier le second sous-formulaire à la première avec la clé primaire de la table sous-jacente.

C'est l'alternative la plus simple que je puisse imaginer pour rendre la zone de texte modifiable.

+0

Merci, En ce moment je suis plus proche de Votre solution, mais je préférerais une option avec la zone de texte, parce que l'information C est assez longtemps. – galvanize

Questions connexes