2016-12-19 42 views
0

設置

Access 2007年如何在Microsoft訪問表單中創建自由標記字段?

這是一個簡單的場景。這與我的實際使用案例幾乎一樣,更容易解釋。我在電影和流派之間有很多關係,表格結構在下面。

表:電影 ID自動編號 名文本

表:流派 ID自動編號 名文本

表:movie_genres movie_id數 genre_id數

我想一個表單,允許我列出給定電影的所有流派。但也讓我創造新的流派,而無需打開一個單獨的表格。類似於免費標籤在Drupal或Wordpress等cms網站中的工作方式。

我嘗試1

我已經成功地創建一個表單,允許我來顯示使用一個子表單指向movie_genres表,指着種類表的組合框的所有標籤。此表單設置還允許我選擇現有的值作爲新類型。但是,它並不允許我創建新的流派。

在這種形式下,如果我輸入的值不存在,我會收到警告「您輸入的文本不是列表中的項目。」

如果我試圖將組合框更改爲「限制列表:否」,我收到警告:「第一個可見列......不等於綁定列。如果我將第一個可見列設置爲綁定列,則組合框只顯示數字而不顯示名稱,這很愚蠢,因爲信息是以任何方式存在的。

形式對於該簡化的情況是這樣的:

enter image description here

我嘗試2

我還可以創建指向兩個movie_genres和流派表與常規的文本框指向子窗體流派名稱。這允許我創建新的值,但它不允許我從現有值中進行選擇。沒有這張照片。

在此窗體上創建組合框與第二個窗體相同。

問題再次

我如何創建支持創建和上市已有流派電影形式的項目嗎?

回答

1

您可以使用'NotInList'事件輕鬆地將新值添加到流派列表。留下Limit To List: Yes並使用類似於以下代碼的代碼:

Private Sub GenreName_NotInList(NewData As String, Response As Integer) 
    ' Prompt user to verify they wish to add new value. 
    If MsgBox("Genre '" & NewData & "' is not in list. Add it?", _ 
     vbOKCancel) = vbOK Then 
     ' Set Response argument to indicate that data 
     ' is being added. 
     Response = acDataErrAdded 
     ' Add string in NewData argument to row source. 
     DoCmd.SetWarnings False 
     DoCmd.RunSQL "INSERT INTO Genres (GenreName) SELECT '" & NewData & "';" 
     DoCmd.SetWarnings True 
    Else 
    ' If user chooses Cancel, suppress error message 
    ' and undo changes. 
     Response = acDataErrContinue 
     Me.GenreName.Undo 
    End If 
End Sub 
+0

這正是我所期待的。謝謝。我的印象是NotInList只有在項目不限於列表的情況下才能使用。非常感謝。 – danielson317

相關問題