基于组合框的值动态地将表格结果显示为子表格

时间:2017-10-20 14:42:54

标签: vba access-vba

我在Microsoft访问应用程序中有表单

并以该形式我有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

最佳方法是什么?

谢谢

1 个答案:

答案 0 :(得分:1)

我不相信你可以使用表作为子表单,但我一直使用基于表的子数据表来做这种事情。请尝试以下方法:

  1. 在主窗体的加载事件中,通过设置MySubForm.SourceObject =“”
  2. 清除子窗体
  3. 在ComboQueries组合框的 After_Update 事件中,将MySubform.Sourceobject设置为等于正确的子数据表。
  4. 将子数据表的.RecordSource设置为从组合框构建的sql字符串。
  5. 以下是它应该是什么样子:

    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”之类的保留关键字作为字段名称,这是以后创建不必要的麻烦的可靠方法。