2010-11-12 6 views
0

J'ai un petit DBase, il coordonne les outils dans 6 magasins séparés. En sélectionnant le nom de la boutique que vous voulez regarder met à jour le SQL du qryInventory très bien si elle regarde la bonne table, mais je n'ai pas pu obtenir le sous-formulaire à mettre à jour.Requery Subform après la mise à jour de SQL dynamique.

J'ai regardé un peu partout et j'ai trouvé plusieurs variantes de ce code, mais je n'ai pas réussi à les faire fonctionner du tout.

Forms.Form_UpdateInventoryForm.Form_Inventory00.Requery

+2

Juste une suggestion, mettez tous les magasins dans la même table (à moins qu'ils aient des champs radicalement différents) et ajoutez un champ de ShopID. De cette façon, tout ce que vous auriez à faire est de définir l'ID du magasin à une valeur de paramètre et d'éviter le SQL dynamique. – JeffO

Répondre

1

La syntaxe est:

[NameOfMainForm].[NameOfSubformControl].Form.Requery 

Si vous utilisez ce de la forme principale, vous pouvez utiliser moi au lieu de [NameOfMainForm]. Veillez à utiliser le nom du contrôle de sous-formulaire, pas le formulaire contenu. La forme et la réquisition sont telles qu'elles sont. Formulaire est une propriété du contrôle de sous-formulaire.

Plus d'informations: http://www.mvps.org/access/forms/frm0031.htm

+0

Merci pour le lien, il ressemble à une ressource excellend. – Blackbirdx61

+0

Me! Inventory00.Form.Requery fonctionne dans la mesure où il ne génère pas d'erreurs, mais les données de test que j'ai placées de sorte que j'ai un visuel Q. me dit que les données réelles ne changent pas, même si je clique sur le sous-jacent Interroger il arrive avec le jeu de données correct. – Blackbirdx61

+0

Avez-vous configuré les champs enfant et maître de lien? Remplacez-vous le sous-formulaire Source d'enregistrement lorsque le magasin est modifié? Comme le suggère Jeff O, si toutes ces données se trouvaient dans les mêmes tables, vous pouviez utiliser l'identifiant du magasin (contrôle ou champ) comme lien entre le formulaire et le sous-formulaire et le sous-formulaire se mettait automatiquement à jour quand un nouveau magasin était sélectionné. – Fionnuala

0

j'ai rencontré ce problème, y compris l'échec de Requery-tion du sous-formulaire. Ce qui semble résoudre le problème, au moins dans mon cas, consiste à effacer la propriété SourceObject du contrôle de sous-formulaire dans le formulaire Parent (maître), puis à le réinitialiser. Cela suppose Form_Master est défini ..

Form_Master.SubformQuery.SourceObject = "" 'this is the important part 
    Form_Master.SubformQuery.SourceObject = "Query.ListSearchQuery" 

Notez que je fais une chose obscure, qui utilise une requête comme l'objet source. Cela semble forcer Access à regarder le nouveau sql, même s'il vient de changer dans la requête référencée.

Heureusement, cela fonctionnerait aussi dans la situation de forme normale. Vous pourriez probablement généraliser à quelque chose comme ceci

Dim sourceReset As String 
    Dim Form_Master As Form_Master 

    Set Form_Master = Forms!Master 
    sourceReset = Form_Master.SubformControl.SourceObject 
    Form_Master.SubformControl.SourceObject = "" 'force reset 
    Form_Master.SubformControl.SourceObject = sourceReset