2012-04-02 83 views
1

說我有Access 2007中兩個表:隱藏項目,而不同時清除文字記錄是指隱藏物品

Table 'Person: 
    Id : Autonumber 
    Name : Text 
    IsActive : Yes/No 

Table 'Note': 
    Id : Autonumber 
    PersonId : Number (foreign key, Person.Id) 
    Note : Memo 

我有一個列出了注意所有條目的形式表,並允許用戶插入/更新記錄。在窗體上的人地控制與

Control Source = PersonId 
Row Source = SELECT Person.Name, Person.Id FROM Person; 
Bound Column = 2 
Column Count = 2 
Column Widths = 3cm;0cm 

現在我想限制組合框所以只允許選擇活動的人的組合框,但是當我加入「WHERE Person.IsActive」對於RowSource查詢,引用非活動人員的所有記錄的組合框顯示爲空白。我認爲將'限制到列表'選項設置爲'否'會解決這個問題,但是當我執行Access時會強制我更改顯示的列,以便組合框現在顯示人員ID而不是人員名稱,而不是人員名稱很有幫助。

有沒有兩種最好的方法?我希望能夠從組合框列表中隱藏非活動用戶,但仍然有非活動用戶顯示爲當前非活動用戶仍處於活動狀態時創建的記錄中組合框的值。

編輯:相關的問題:Custom row source for combo box in continuous form in Access

回答

1

您可以將代碼添加到當前事件根據人是否有效或無效,或者您可以顯示一個文本框和隱藏組合框,要麼將行源相同的標準。

+0

[此問題]的答案(http://stackoverflow.com/q/86278/1030345)更充實了您的解決方案,對我有幫助。 – ralbatross 2012-04-03 15:47:01

+0

@ralbatross您的評論意味着您使用的是連續的表單,完全不同。例如,未綁定的控件和連續的表單不起作用。 – Fionnuala 2012-04-03 15:49:20

+0

是的,我正在使用連續的表單。是的,我發現未綁定的控件導致問題。我想我跳過這把槍標記爲解決方案。對不起 – ralbatross 2012-04-03 16:26:02

1

,如果你的isactive列添加到行信號源和顯示它使用戶可以看到哪些人是活躍

行來源= SELECT Person.Name,Person.id,Person.IsActive從一個人

列計數= 3

列寬度=3釐米;0釐米;1釐米

然後在組合框的更新前事件

Private Sub Combo10_BeforeUpdate(Cancel As Integer) 
If Not Me.Combo10.Column(2) Then 
    MsgBox "You can only pick active people" 
    Cancel = True 
End If 
+1

爲什麼給用戶一個做出無效選擇的機會,然後告訴他們他們的選擇是不可接受的?更好的是讓他們從唯一可接受的價值中選擇,IMO。 – HansUp 2012-04-03 00:02:27