2016-11-25 90 views
0

對於可能愚蠢的問題,我表示歉意,但我已經不知道用哪些詞語來搜索我需要的內容。我有良好的編程經驗,但是對於Access來說是相當新穎的。用戶如何在表格中找到多條記錄

我有一個窗體的控件,它也有一個只讀的人聯繫人列表的子窗體。該列表由多個表中的動態查詢填充,因此我不知道在設計時所有字段的計數和名稱。用戶希望能夠手動從列表中選取多個聯繫人,以向他們發送單個電子郵件。

我以前的表控件允許用戶選擇多個記錄(通常用ctrl)。但事實證明,在Access數據表中只允許連續選擇。

然後我想添加可編輯的複選框列到只讀表,用戶將能夠標記所需的行。但我還沒有找到如何在Access中執行此操作的方法。似乎Append in Fields集合中的方法僅適用於表和索引,但不適用於查詢或記錄集。

我也讀過建議擺脫子窗體,並在屬性multiselect = extended列表框中顯示數據。但在這種情況下,用戶將失去表格的好處:他無法移動和調整列的大小,對數據進行排序和過濾。

我有一種感覺,決定應該很簡單,我只是不知道如何在Access中實現此功能的傳統方式。請幫幫我。

回答

1

如果您需要數據表(用於過濾,排序,調整大小),那麼可編輯複選框是您唯一的選擇。

該列可以是原始表的一部分,也可以使用ID和檢查列創建連接表,在該表中添加基表的所有記錄中的ID。

在子窗體中,您可以將除複選框以外的所有控件設置爲Locked = True

+0

我是否必須爲此創建臨時表並在每次填充數據表時填充它?這聽起來對我來說很奇怪。在Access中這真的是一個正常的做法嗎? – Sergey

+0

是的。 - 「正常」的做法恕我直言,是一個多選列表框。但是,如果您需要數據表的附加功能,則需要可編輯列來選擇任意記錄。 – Andre

1

這可以通過利用子表單的RecordsetClone屬性來實現。這裏有一個例子:

Sub GetSelectedValue() 

Dim rs as Recordset 
Dim sContact as String 

Set rs = Me.[SubFormName Goes Here].Form.RecordsetClone  
rs.MoveFirst 
rs.Move Me.[SubFormName Goes Here].Form.SelTop - 1 
sContact = rs![Recordset Column Name Goes Here] 

Set rs = Nothing 
End Sub 

您可以通過一個按鈕控制,是以活動行接觸,並在該名字進入你的主窗體上的列表框把這個主窗體上。一旦用戶做出所有選擇,您就可以在列表框中的名稱之外運行電子郵件程序。

+0

謝謝,克雷格。我認爲這也是一個很好的方法,但我已經通過安德烈的提議完成了。 – Sergey

+0

只要你的程序以你喜歡的方式運行,那麼一切都很好。 :-) –

相關問題