This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Master/Detail Einschränkung

Allgemeine Fragen zur Entwicklung von und mit JVx.

Master/Detail Einschränkung

Postby johnit » Fri Nov 16, 2012 6:31 pm

Kann die Liste der Master-Details auf jene Detail-Sätze eingeschränkt werden, die noch nicht dem Master-Satz zugeordnet sind?

Beispiel:

Der Master Satz "Komponente" enthält 0 bis n zugeordnete Entwickler. Die möglichen Entwickler stammen aus einer eigenen Stammdaten Tabelle. Beim Hinzufügen eines neuen Entwicklers sollten die bereits zugeordneten Entwickler nicht mehr angeboten werden weil es ansonsten zu einer "unique constraint" Exception kommt.

Ein ähnliches Problem tritt in der Showcase-Anwendung auf, wenn man zu einem Staat nochmals ein Bundesland hinzufügt, das bereits zugeordnet ist.
johnit
 
Posts: 45
Joined: Fri Nov 16, 2012 5:58 pm

Re: Master/Detail Einschränkung

Postby Support@SIB » Fri Nov 16, 2012 7:09 pm

Der einfachste Weg ist über eine View wie z.B.:

Code: Select all
create or replace view v_komp_user_notassigned as
select e.id
      ,e.name
      ,k.id komp_id
  from komponenten k,
       entwickler e
 where not exists (select *
                     from komp_entwickler ke
                    where ke.entw_id = e.id and ke.komp_id = k.id)

Diese View dann im Life-cycle Objekt des Screens für Ihre DBStorage verwenden.

Am Client z.B.:

Code: Select all
private void initializeModel() throws Throwable
{
  …
  // Lookup für die noch nicht zugewiesenen Benutzer anlegen
  UILinkedCellEditor lceUserNotAssigned = new UILinkedCellEditor(
    new ReferenceDefinition(new String[] {"ENTW_ID", "ENTW_NAME"},
                            rdbKompUserNotassigned,
                            new String[] {"ID", "NAME"}));

  // Die KOMP_ID der aktuellen Zeile als Suche mit der KOMP_ID im Lookup verknüpfen
  lceUserNotAssigned.setSearchColumnMapping(new ColumnMapping(new String[] {"KOMP_ID"}))

  // Lookup als Editor auf die richtige Spalte hängen.
  rdbKompEntwickler.getRowDefinition().getColumnDefinition("ENTW_NAME").
     getDataType().setCellEditor(lceUserNotAssigned);
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Master/Detail Einschränkung

Postby johnit » Fri Nov 16, 2012 7:27 pm

Die vorgeschlagene Weg funktioniert bestens.
johnit
 
Posts: 45
Joined: Fri Nov 16, 2012 5:58 pm


Return to Development (DE)