2016-12-19 3 views
0

Setup-

Access 2007Wie kann ein freies Tagging-Feld in einem Microsoft-Zugangsformular erstellt werden?

Dies ist ein vereinfachtes Szenario. Es ist fast identisch mit meinem tatsächlichen Anwendungsfall einfach leichter zu erklären. Ich habe eine viele zu viele Beziehung zwischen Filmen und Genres die Tabellenstruktur ist unten.

Tabelle: Filme ID Autowert -namentext

Tabelle: Gattungen id Autowert -namentext

Tabelle: movie_genres movie_id Nummer genre_id Nummer

würde ich eine Form wie das erlaubt Ich möchte alle Genres für einen bestimmten Film auflisten. Aber ich kann auch neue Genres erstellen, ohne ein separates Formular zu öffnen. Ähnlich wie das freie Tagging in einer CMS-Website wie Drupal oder Wordpress funktioniert.

Mein Versuch 1

Ich habe erfolgreich eine Form, die ich alle Tags mit einer Unterform der movie_genres Tabelle zeigt angezeigt werden kann und ein Kombinationsfeld in das Genre Tabelle zeigen. Dieses Formular-Setup erlaubt mir auch existierende Werte als neue Genres auszuwählen. Es erlaubt mir jedoch nicht, neue Genres zu erstellen.

In diesem Formular, wenn ich einen Wert nicht vorhanden gebe ich bekomme die Warnung "Der eingegebene Text ist kein Element in der Liste."

Wenn ich versuche, das Kombinationsfeld zu "Limit To List: No" zu ändern, erhalte ich die Warnung: "Die erste sichtbare Spalte ... ist nicht gleich der gebundenen Spalte." Wenn ich die erste sichtbare Spalte die gebundene Spalte mache, zeigt das Kombinationsfeld einfach Zahlen und keine Namen an, was albern ist, weil die Information in beiden Richtungen vorhanden ist.

Die für diesen vereinfachten Fall wie folgt aussieht:

enter image description here

Mein Versuch 2

Ich kann auch ein Unterformular erstellen, die auf die Punkte sowohl für die movie_genres und Genres Tabellen mit einem regelmäßigen Textbox zeigt auf Genre-Name. Dies erlaubt mir, neue Werte zu erstellen, aber ich kann nicht aus vorhandenen Werten auswählen. Kein Bild von diesem.

Das Erstellen eines Kombinationsfelds in diesem Formular funktioniert identisch mit dem zweiten Formular.

Die Frage wieder

Wie kann ich einen Film Form Element zu erstellen, die sowohl Erstellung und Auflistung bestehendes Genres unterstützt?

Antwort

1

Mit dem Ereignis 'NotInList' können Sie ganz einfach neue Werte zur Liste der Genres hinzufügen. Lassen Sie Limit To List: Yes und verwenden Code ähnlich dem folgenden Code:

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

Das ist genau das, was ich gesucht habe. Vielen Dank. Ich hatte den Eindruck, dass NotInList nur funktionierte, wenn der Artikel nicht auf eine Liste beschränkt war. Ich danke dir sehr. – danielson317

Verwandte Themen