Freigeben über


Aktualisieren einer auf einem Listenwert basierenden 1:n-Anzeige

Wenn der Benutzer zu einem bestimmten Datensatz springen möchte, indem er in der Liste einen Wert auswählt, muss bei einer 1:n-Beziehung der geänderte Datensatzzeiger in der Master-Tabelle berücksichtigt werden. Diese Funktionalität können Sie sowohl bei lokalen Tabellen als auch bei lokalen Ansichten und Remoteansichten implementieren.

Lokale Tabellen

Wenn die RowSourceType-Eigenschaft der Liste auf 2 - Alias oder 6 - Fields eingestellt ist und RowSource eine lokale Tabelle mit einer Beziehung ist, die in der Datenumgebung des Formulars festgelegt wurde, muss im InteractiveChange-Ereignis der THISFORM.Refresh-Befehl erteilt werden, wenn der Benutzer einen neuen Wert auswählt. Auf der n-Seite einer 1:n-Beziehung werden nur die Datensätze automatisch angezeigt, die mit dem Ausdruck der Master-Tabelle übereinstimmen, auf dem die Beziehung basiert.

Ansichten

Die Aktualisierung einer 1:n-Anzeige verläuft etwas unterschiedlich, je nachdem, ob für die RowSource-Eigenschaft des Listenfeldes eine lokale Ansicht oder eine Remoteansicht eingestellt ist. Im folgenden Beispiel wird das Erstellen eines Formulars mit einem Listenfeld und einem Datenraster beschrieben. Im Listenfeld werden die Werte des Feldes cust_id der Tabelle TESTDATA!Customer angezeigt. Im Datenraster-Steuerelement stehen die Bestellungen für die im Listenfeld markierte Kundennummer (cust_id).

Erstellen Sie zunächst im Ansichts-Designer eine Ansicht mit Parametern für die Bestellungen. Wenn Sie die Ansicht im Ansichts-Designer erstellen, setzen Sie das Auswahlkriterium für den Fremdschlüssel auf eine Variable. Im folgenden Beispiel wird die Variable m.cCust_id genannt.

Auf einer Variablen basierende Ansicht mit Parametern

Zum Entwerfen des Formulars folgen Sie den Anleitungsschritten in der folgenden Prozedur. Beachten Sie, dass die Ansicht einen Wert für den Parameter erfordert, der beim Laden des Formulars nicht verfügbar ist. Wenn Sie die NoDataOnLoad-Eigenschaft des Cursorobjekts für die Ansicht auf Wahr (.T.) einstellen, verhindern Sie, dass die Ansicht vor dem Aufruf der REQUERY( )-Funktion ausgeführt wird. Zu diesem Zeitpunkt hat der Benutzer bereits einen Wert für die Variable gewählt, die für die parametrisierte Ansicht verwendet wird.

So entwerfen Sie eine 1:n-Liste, die auf lokalen Ansichten oder Remoteansichten basiert

  1. Fügen Sie die Tabelle und die parametrisierte Ansicht zur Datenumgebung hinzu.

  2. Setzen Sie in der Datenumgebung****im Eigenschaftenfenster des Cursor-Objekts der Ansicht die NoDataOnLoad-Eigenschaft auf Wahr (.T.).

  3. Setzen Sie die RowSourceType-Eigenschaft des Listenfeldes auf 6 - Felder und die RowSource-Eigenschaft des Listenfeldes auf das Feld, das im Parameter der Ansicht als Fremdschlüssel verwendet wird.

    Im vorliegenden Beispiel würden Sie die RowSource-Eigenschaft auf customer.cust_id setzen.

  4. Stellen Sie die RecordSource-Eigenschaft des Datenraster-Steuerelements auf den Namen der zuvor erstellten Ansicht ein.

  5. Speichern Sie im Code des InteractiveChange-Ereignisses den Wert des Listenfeldes in einer Variablen, und fragen Sie die Ansicht erneut ab:

       m.cCust_id = THIS.Value
       *assuming the name of the view is orders_view
       =REQUERY("orders_view") 
    

Weitere Informationen zu lokalen Ansichten und Remoteansichten finden Sie in Kapitel 8, Erstellen von Abfragen und Sichten (Ansichten).

Siehe auch

Benutzern die Möglichkeit geben, einem Listenfeld Einträge hinzuzufügen | Hinzufügen von Bildern zu Einträgen in einer Liste | Hinzufügen von Bildern zu Einträgen in einer Liste | Verwenden von Steuerelementen | Steuerelemente und Objekte