Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Sutpen am 06.08.12 - 10:13:15

Titel: Computed Column Values
Beitrag von: Sutpen am 06.08.12 - 10:13:15
Hallo zusammen,

ich habe mal eine Frage bzgl computed column values. Vielleicht könnt ihr mir einen Tipp geben, ob das überhaupt geht, was ich mir vorstelle:

Ich habe zwei views in der Datenbank. In beiden views habe ich eine Spalte in der jeweils gleiche Werte drinstehen.

View1:

Spalte 1 - Werte A
Spalte 2 - Werte B

View2:

Spalte 1 - Werte A
Spalte 2 - Werte C
Spalte 3 - Computed

Ist es möglich das wenn in einer Zeile die Werte aus Spalte 1 / Werte A übereinstimmen, das in view 2 in Spalte 3 der Wert aus View 1 Spalte 2 / Wert B eingetragen wird?

Ich weiß, wie ich die beiden Spalten gegeneinander abgleichen kann, nur fehlt mir momentan ein Ansatz oder eine Lösung, wie ich dann in der jeweiligen Zeile in View2 das richtige ausgebe. Leider finde ich hier auch nichts passendes im Internet / Forum zu.

Danke für eure Hilfe.

Gruß

René
Titel: Re: Computed Column Values
Beitrag von: ascabg am 06.08.12 - 10:20:11
Hallo,

Etwas verwirrend.

Woher kommen denn die in Ansicht 1 - Spalte 1 angezeigten Werte (welche Form, welches Feld in der Form)?
Und woher kommen die in der Ansicht 2 - Spalte 1 angezeigten Werte (welche Form, welches Feld)?

Ansonsten weiss ich noch nicht so genau, was Du ueberhaupt erreichen willst.


Andreas
Titel: Re: Computed Column Values
Beitrag von: eknori am 06.08.12 - 10:24:12

// key from column A, view2
var key = viewRow.getColumnValue("title of a column");
// lookup key in view A ,view 1 and return column B
var lookup = @DbLookup(@DbName(), "viewname", key, 2);
return lookup

in etwa so ...
Titel: Re: Computed Column Values
Beitrag von: Sutpen am 06.08.12 - 10:45:52
Zu dem Hintergrund für meine Anfrage:

Erstmal ich bin noch recht jungfreulich im Thema und habe wahrscheinlich noch nicht die optimalsten Ideen, um etwas zu lösen. Momentan bin ich an einer Datenbank, wo Events eingetragen werden, zu welchen sich Benutzer eintragen können. Die Events sind jedoch Platztechnisch beschränkt.
Beim Anlegen eines solchen Events (Form1) wird im Hintergrund ein zweites Dokument erzeugt (Form 2). In beiden Dokumenten steht die Kursnummer - Werte A / Spalte 1. In Form 2 wollte in Spalte 2 / Werte B ich die freien Sitzplätze speichern.
Dies hat den Hintergrund: Wenn ich dies in dem eigentlichen Eventdokument speichere und mehrere Personen gleichzeitig auf das Dokument zugreifen, um sich ein oder auszutragen, wird sich das Dokument vermehren, da ich bei jeder Änderung das Dokument ja speichern muss. Wenn jemand teilnehmen klickt, wird ein drittes Dokument (Form 3) erzeugt mit Kursnummer und Teilnehmernamen und in Form 2 die Anzahl der Plätze um 1 reduziert bzw. beim Abmelden das Dokument mit der Kursnummer und dessen Namen wieder gelöscht und in Form 2 die Anzahl der Sitzplätze wieder erhöht.
Wie gesagt, wahrscheinlich nicht der beste Weg, aber mit ein wenig Errorhandling finde ich das für ca 400 User eine akzeptable Lösung. Die Wahrscheinlichkeit das zwei Personen genau gleichzeitig teilnehmen klicken, ist recht gering.

@ Ulrich:

Ähnliches habe ich auch schon gefunden bzw. eine nette Anleitung für computed values in der gleichen view auf der XPage ( http://www-10.lotus.com/ldd/ddwiki.nsf/dx/VideoXPagesViewControlDisplayHTMLComputedCol.htm ).
Bei deiner Lösung habe ich noch ein Problem: Auf der XPage wo die view brechnet wird, habe ich nur View2. Wie kriege ich den key?
Ich hatte folgendes gefunden, um mir eine ganze Spalte zu holen. Mit dem getColumnValue kriege ich dann jedoch eine Fehler.

var v:NotesView = database.getView("vwCourse");
var vcourse:java.util.Vector = v.getColumnValue("Seats");


Titel: Re: Computed Column Values
Beitrag von: eknori am 06.08.12 - 10:57:24
So wie ich es verstanden habe, ist key doch Value A von view2. Und die lookup spalte ist ColA view 1
Titel: Re: Computed Column Values
Beitrag von: Sutpen am 06.08.12 - 11:05:22
ja das ist richtig. Bei dem key bzw eher bei viewRow habe ich dann momentan noch ein Problem, denn bei

var v:NotesView = database.getView("vwCourse");
var vcourse:java.util.Vector = v.getColumnValue("Seats");

kriege ich einen TypFehler:
TypeError] Error calling method 'getColumnValue(string)' on an object of type 'lotus.domino.local.View [Static Java Interface Wrapper, lotus.domino.local.View: lotus.domino.View]

Hier fehlt mir irgendwie noch ein Baustein.


Titel: Re: Computed Column Values
Beitrag von: eknori am 06.08.12 - 11:20:16
var key = viewRow.getColumnValue("title of a column");

wobei du natürlich viewRow antsprechend deinem eigenen Wert ( var= ) setzen musst

"title of a column" = programmatischer Name von col A in view 2
Titel: Re: Computed Column Values
Beitrag von: Sutpen am 06.08.12 - 13:27:56
Ich steh momentan echt auf den Schlauch, kannst du mir das vielleicht etwas genauer erklären? Woher ich das viewRow nehme, da hängt es bei mir grade.

Ich kann mir über database.getView("vwCourse") die View holen die ich brauche. Nur wenn ich jetzt darauf getColumnValue("Titel der Spalte") anwende, bekomme ich den o.g. Typfehler.


Titel: Re: Computed Column Values
Beitrag von: eknori am 06.08.12 - 13:55:44
z,B.

      <xp:dataTable id="view_IE_WillFuckItUp" rows="15"
         styleClass="coisDataTable" var="viewRow" value="#{iefail}"
         partialExecute="true" partialRefresh="true" rowClasses="oddrow, evenrow"
Titel: Re: Computed Column Values
Beitrag von: Sutpen am 06.08.12 - 15:57:03
Dank Dir.

War die ganze Zeit wohl in eine andere Richtugn am denken, aber letztendlich klappts :-)

Danke