2017-10-20 12 views
1

j'ai le formulaire dans une application d'accès Microsoftaffichage dynamique des tableaux résultent en sous-formulaire en fonction des valeurs d'un combobox

et sous cette forme que j'ai 2 zone de liste déroulante, qui affiche les dates et qui affichent des noms de requête

en outre, j'ai un sous-formulaire que je voudrais afficher dynamiquement des tables, en fonction de ce que l'utilisateur de sélectionner dans la zone de liste déroulante

des exemples de ce que je suis en train de réaliser:

Private Sub Form_Load() 

Select Case comboBoxQueries.value 

Case comboBoxQueries.value = query1 

MySubForm.SourceObject = Select * from Table_Employee where Table_Employee.date = ComboBoxDates.Values 


Case comboBoxQueries.value = query2 

MySubForm.SourceObject = Select * from Table_School where Table_School .date = ComboBoxDates.Values 
       ... 

End Select 


End Sub 

Quelle serait la meilleure façon de faire cela?

Merci

+0

Je ne pense pas que cela fonctionnerait parce que les noms de champs changeront dans la source d'enregistrement, puis la source de contrôles de sous-formulaire ne correspondra pas à l'ensemble d'enregistrements. – Minty

Répondre

1

Je ne crois pas que vous pouvez utiliser une table comme un sous-formulaire, mais je faire ce genre de chose tout le temps à l'aide d'un sous-feuille basée sur une table. Effectuez les opérations suivantes:

  1. Sur le principal événement de chargede forme, décochez la sous-formulaire en définissant MySubForm.SourceObject = « »
  2. En cas After_Update du ComboQueries combobox, mis MySubform.Sourceobject égal à la sous-feuille de données correcte.
  3. Définissez le .RecordSource de la sous-feuille de données sur la chaîne SQL créée à partir de la liste déroulante.

Voilà à peu près ce qu'il devrait ressembler à:

Private Sub Form_Load() 
    Me.MySubForm.SourceObject = "" 
End Sub 

Private Sub ComboQueries_AfterUpdate() 

    Dim sql As String 

    Me.MySubForm.SourceObject = Me.ComboQueries.Column(1) 

    sql = "SELECT * FROM " & Me.ComboQueries.Column(0) & " WHERE Date = " & Me.Combo2.Value 

    Me.MySubForm.Form.RowSource = sql 


End Sub 

Aussi, essayez de ne pas utiliser des mots-clés réservés tels que « DATE » comme noms de champs dans vos tables, il est un moyen sûr de créer des maux de tête inutiles plus tard sur.

+0

Je n'ai pas utilisé les mots-clés date, je l'ai juste utilisé pour illustrer mon problème. Merci – user3752718

+0

Content de vous aider. Je l'ai fait rapidement, de mémoire, alors n'hésitez pas à faire un commentaire si quelque chose n'est pas clair ou ne fonctionne pas pour vous. – DataWriter