2017-10-20 84 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

相關問題