2017-10-20 81 views
1

我有表在Microsoft Access应用程序动态显示表导致到子窗体基于一个组合框的值

,并以这样的形式我有2个组合框,一个显示显示查询的名称日期和一个

另外,我有,我想动态显示表,基于什么用户在组合框中选择我想要实现

举例子窗体:

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 

什么是最佳的方式来做到这一点?

谢谢

+0

我不认为这会工作,因为字段名称将在记录源中更改,然后子窗体控件源将不匹配记录集。 – Minty

回答

1

我不相信,你可以使用一个表作为子窗体,但我使用基于表的子数据表做这种事情所有的时间。请尝试以下操作:

  1. 在主窗体的负载事件,通过设置MySubForm.SourceObject =“”
  2. After_Update事件ComboQueries组合框,设置MySubform.Sourceobject等于清除窗体正确的子数据表。
  3. 将subdatasheet的.RecordSource设置为从组合框生成的sql字符串。

这里的大致应该是什么样子:

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 

此外,尽量不要使用保留的关键字,如“DATE”在你的表字段名,这是一个肯定的方式以后造成不必要的麻烦上。

+0

我没有使用关键字日期,我只是用它来说明我的问题。谢谢 – user3752718

+0

很高兴帮助。我从记忆中迅速做到了这一点,所以如果有任何不清楚或不适合您的情况,请随时发表评论。 – DataWriter

相关问题