2010-07-08 4 views
2

Je suis sûr qu'il existe une solution simple à cela, mais elle semble m'échapper. J'ai donc un formulaire avec un RecordSource de SELECT * FROM Table1 WHERE id=[@id]. (Oui, je sais que SELECT * est diabolique, c'est juste un exemple). Évidemment, le comportement par défaut de ce formulaire est celui de l'ouverture, une boîte de dialogue de saisie demandera la valeur "[@id]". Mais ce que je voudrais faire est d'appeler ce formulaire de VBA et au lieu de faire apparaître le dialogue de saisie, allez-y et dites au formulaire ce que [@id] est, donc la boîte de dialogue ne s'ouvre jamais, et le formulaire s'ouvre comme [@id] où remplacé par une valeur dans la requête. Je l'ai essayé ce qui suit jusqu'à présent ...Formulaires Access 2007 avec RecordSource paramétré

Form_MyForm.RecordSource = String.Replace(Form_Form1.RecordSource, "[@id]", 1) 
DoCmd.OpenForm "MyForm" 

... et ...

Form_MyForm.txtId.Value = 1 
DoCmd.OpenForm "MyForm" 

... et ...

DoCmd.OpenForm "MyForm", acNormal, , "[@id]=" & 1 

... mais aucun d'entre eux ne semble avoir l'effet désiré. Comment puis-je faire cela?

Merci d'avance.

Répondre

2

Voir s'il est plus facile de laisser tomber la clause WHERE de votre recherche:

SELECT * FROM Table1; 

Ensuite, utilisez le paramètre optionnel WhereCondition avec OpenForm pour indiquer quel identifiant vous voulez:

DoCmd.OpenForm "MyForm", WhereCondition:="id = 1" 
+0

Je savais que ce serait sois quelque chose de facile! Merci! –

+0

Cela ne semble pas fonctionner de la même manière pour les rapports. Y a-t-il autre chose que je dois faire pour eux? –

+0

rien ne va. l'a réparé. Pardon. : / –