2012-08-24 52 views
2

我有一個表單,其中包含多達100列的子表單,但是我只需要在任何時候看到這些列中的5個。我需要看到的列總是名字和姓氏加上其他三列,這些列是根據主窗體(列中有標籤,如HT001,HT002等)做出的選擇。可用的三個組合框中的每一個都有一列。我到處找一個解決方案,並不斷尋找基於訪問中的組合框隱藏/顯示多列

我![mycontrol] .columnhidden =假

,我可以看到它是如何工作的一個或兩列,但我的代碼將需要非常可笑長,如果每個列需要這個。除了大量的列以外,我還有12個不同的子表單,這些子表單是使用select case程序選擇的。我正在尋找一個簡單的解決方案,因爲我仍然非常瞭解VBA。

回答

0

如果您正在使用數據表,您可以根據所做的選擇動態設置記錄源。

Me.RecordSource = "SELECT HT001, HT002 FROM MyTable" 

構建SQL時,您可以參考組合框:

Me.RecordSource = "SELECT HT001, " & Me.Combo1 & " FROM MyTable" 

的一些注意事項,使用一個列表框從一個表中的字段列表。

您可以設置行源類型字段列表和行源表的名稱:

RowSource: Table1 
RowSourceType: Field List 

爲了選擇多個字段,它設置的多選屬性是很重要的:

MultiSelect : Simple 

您可以通過在代碼中選定的項目進行迭代,並建立一個字段列表在SQL使用:

For Each itm In Me.List0.ItemsSelected 
    strSelect = strSelect & "," & Me.List0.Column(0, itm) 
Next 

strSelect = Mid(strSelect, 2) 
sSQL = "SELECT " & strSelect & " FROM Table1" 
+0

感謝您的回答很好,很簡單,我可以看到它是如何工作的,但是如何從組合框中獲得列代碼? –

+0

我已經添加了一個註釋,但是,如果您願意的話,您可能會考慮多選列表框,我可以添加更多信息。 – Fionnuala

+0

謝謝。你爲我節省了很多搜索和沮喪,再次感謝你。 –