Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Blood4line am 27.08.07 - 12:35:13

Titel: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 12:35:13
Hi... ich hab mal wider eine Frage zu HTML. Mein Programm ist eine Besuchernameldung. Die Aufgabe: Wenn ich die Seite öffne, soll mir angezeigt werden, wer heute zu besuch kommt. Das is easy und das habe ich auch geschafft. Aber das nächste Problem ist, wenn es mehrere Besucher an einem Tag gibt. Weil, wenn es z.B. 2 Besucher an einem Tag gibt, dann wird der Wert des zweiten Besuchers einfach in die gleiche Zelle des ersten Besuchers eingtragen und durch ein Komma getrennt. Das möchte ich nicht. Ich möchte, dass jede Person eine eigene Zeile hat. Also eigentlich so wie bei einer notesview... hoffe ihr könnt mir helfen
Titel: Re: HTML Tabelle
Beitrag von: flaite am 27.08.07 - 12:37:56
Du kannst den für die Tabelle benötigten html-Tags (mit Inhalten) als berechneten Text in die Seite schreiben. 
Mit @for Formel ist das relativ einfach.
Titel: Re: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 12:46:20
ja so hab ich das auch gemacht... ich hab mit dann mit @Fromel die Werte geholt, die ich brauche. Das Problem ist ja, dass mehrere Werte dann in einer Zelle angezeigt werden. Ich möchte aber, das für jede Person, eine neue Zeile erstellt wird
Titel: Re: HTML Tabelle
Beitrag von: pete_bla am 27.08.07 - 13:07:03
Hi,
mit @Formeln bekommst Du für Mehfachwerte auch Mehrfachwerte zur Ausgabe zurück.
Wenn du für die Ausgabe (Feldeingenschaft) nichts besonderes angibst werden die Werte Komma-getrennt (oder Semikolon) gelistet.

Für eine Web-Ausgabe eignet sich dann meist ein
Code
@Implode(Mehrfachwert, "<br>")
um z.B. mehrere "Zeilen" zu schreiben.

Sollte eine Tabelle geschrieben werden wirds etwas komplizierter,
du musst dabei zuerst die zeilen anfange, und zum schluss noch zu machen:
(wenn die Tabelle <table> ... </table> schon da ist:)
Code
"<tr><td>" + @Implode(Mehrfachwert, "</td></tr><tr><td>") + "</td></tr>"
und noch etwas komplizierter wenn es mehrere spalten gibt....

(werden die HTML-Tags als text dargestellt, musst du noch eckige Klammern verwenden [<br>])

Oder du bettest eine Ansicht ein und gibst an, dass "HTML" verwendet werden soll (statt Java-Applett).
(Eigenschaft des "Eingebettete Ansicht-Objekts" in der Maske)
Dann erledigt Notes/Domino das für dich.
Titel: Re: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 13:18:52
Zitat
Oder du bettest eine Ansicht ein und gibst an, dass "HTML" verwendet werden soll (statt Java-Applett).
(Eigenschaft des "Eingebettete Ansicht-Objekts" in der Maske)
Dann erledigt Notes/Domino das für dich.

die idee hatte ich auch schon... nur leider funktioniert das nicht... ich probiere ma deine andere Methode aus... thx
Titel: Re: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 13:50:30
Zitat
Code:
@Implode(Mehrfachwert, "<br>")
um z.B. mehrere "Zeilen" zu schreiben.

Sollte eine Tabelle geschrieben werden wirds etwas komplizierter,
du musst dabei zuerst die zeilen anfange, und zum schluss noch zu machen:
(wenn die Tabelle <table> ... </table> schon da ist:)

Code:
"<tr><td>" + @Implode(Mehrfachwert, "</td></tr><tr><td>") + "</td></tr>"
und noch etwas komplizierter wenn es mehrere spalten gibt....

Code
<html>
<head>
<title>Breiten- und H&ouml;henangaben bei Tabellen</title>
</head>
<body>


<h1 align= "center">Heute erwarten wir fogende Besucher</h1>

<br>
<br>

<table align= "center" border="1" width="80%">



  <tr>
<td>Zeit</td>
    <td >Name des Besuchers</td>
    <td >Besucher für</td>
    <td>Raum</td>
    <td>Anlass</td>

  </tr>

  <tr>
   <td> von <Berechneter Wert> bis <Berechneter Wert> Uhr</td>
    <td><Berechneter Wert> </td>
    <td> <Berechneter Wert></td>
    <td> <Berechneter Wert> </td>
    <td><Berechneter Wert></td>


  </tr>

</table>





</body>
</html>

das ist mein code... die brechneten bekommen die Werte durch @DBlookup... ich hoffe einer kann mir jetzt weiter helfen
Titel: Re: HTML Tabelle
Beitrag von: flaite am 27.08.07 - 13:58:12
Bei mir funktioniert das mit der @for Formel

Code
@For(n := 1;
n <= @Elements(dasFeld);
n := n + 1;
val := val + @NewLine + {<tr><td>} + dasFeld + {</td></tr>}); 
@NewLine  + {<table>} + val + @NewLine + {</table>};

dasFeld ist ein Mehrfachwerte Feld.

Titel: Re: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 14:05:18
Zitat
Bei mir funktioniert das mit der @for Formel


Code:
@For(n := 1;
n <= @Elements(dasFeld);
n := n + 1;
val := val + @NewLine + {<tr><td>} + dasFeld + {</td></tr>});
@NewLine  + {<table>} + val + @NewLine + {</table>};


dasFeld ist ein Mehrfachwerte Feld.


thx.. aber sry ich bin ein anfäger ::) :P... wo soll ich die Formel einfügen ? mit in den HMTL code oder für ein berechnetes Feld ?... thx  8)
Titel: Re: HTML Tabelle
Beitrag von: dirk_2909 am 27.08.07 - 14:21:51
Zitat
dasFeld ist ein Mehrfachwerte Feld.

Ein brechnetes Feld, in dem mehrfachwerte zugelassen sind (wie Axel schon angedeutet hat)
Titel: Re: HTML Tabelle
Beitrag von: pete_bla am 27.08.07 - 14:35:12
Hi,

Ob Feld oder berechneter Wert kannst Du Dir eigentlich aussuchen.
Am besten aber ein Feld "Berechnet zur Anzeige".

Dein Code:
Code
  <tr>
<td>Zeit</td>
    <td >Name des Besuchers</td>
    <td >Besucher für</td>
    <td>Raum</td>
    <td>Anlass</td>

  </tr>

  <tr>
   <td> von <Berechneter Wert> bis <Berechneter Wert> Uhr</td>
    <td><Berechneter Wert> </td>
    <td> <Berechneter Wert></td>
    <td> <Berechneter Wert> </td>
    <td><Berechneter Wert></td>


  </tr>

</table>

bau es besser so um:
Code
  <tr>
<td>Zeit</td>
    <td >Name des Besuchers</td>
    <td >Besucher für</td>
    <td>Raum</td>
    <td>Anlass</td>

  </tr>
  <Berechneter Wert>
</table>

und für Berechenten Wert oder das Feld eine Formel in diesem Schema:
Code
val1:= @DbLookup("":"";"":"";"meineView"; Key; "Feld1");
val2:= @DbLookup("":"";"":"";"meineView"; Key; "Feld2");
val3:= @DbLookup("":"";"":"";"meineView"; Key; "Feld3");
val4:= @DbLookup("":"";"":"";"meineView"; Key; "Feld4");
val5:= @DbLookup("":"";"":"";"meineView"; Key; "Feld5");
"<tr><td>" + @Implode( "von " + val1 + " bis " + val2 + " Uhr </td><td>" + val3 + "</td><td>"  + val4 + "</td><td>" + val5; "</td></tr><tr><td>") + "</td></tr>"

mit @For gehts da auch, aber dann musst Du immer auf die einzelnen Werte der Lookups zugreifen ( val1[n]) und dabei auf die einzelnen Dimensionen achten!

(Genau dies, mit dem automatischen zusammensetzten von Mehrfachwerten sehe ich als Stärke von @Formeln an.)

Nachtrag:
sorry da hatte sich ein kleiner Fehler in meinen Code eingeschlichen.
habe aus
Code
"<tr><td>" + @Implode( "von " + val1 + " bis " + val2 + " Uhr +"</td><td>" + val3 + "</td><td>"  + val4 + "</td><td>" + val5; "</td></tr><tr><td>") + "</td></tr>"
gemacht:
Code
"<tr><td>" + @Implode( "von " + val1 + " bis " + val2 + " Uhr </td><td>" + val3 + "</td><td>"  + val4 + "</td><td>" + val5; "</td></tr><tr><td>") + "</td></tr>"
Titel: Re: HTML Tabelle
Beitrag von: flaite am 27.08.07 - 14:50:00
@Pete: Mehrere Lookups sind keine gute Idee, da wirklich inperformant. Du kannst das auch in ein Feld zusammenfassen und dann mit Hilfe von Trennzeichen das wieder zusammenzupusseln.

Ich find die Lösung mit der @for Schleife leichter lesbar und am Ende auch flexibler. Etwa wenn man bestimmte Werte wieder aus der Liste herausschmeissen will.

@Blood:
Das Feld "dasFeld" ist das worauf referenziert wird.
Die Formel kannst du in ein Feld berechnet_zur_Anzeige schreiben oder als "Computed Text". Danach markierst du den Bereich um das Feld als PassThru HTML.
Titel: Re: HTML Tabelle
Beitrag von: Blood4line am 27.08.07 - 15:22:14
Zitat
Hi,

Ob Feld oder berechneter Wert kannst Du Dir eigentlich aussuchen.
Am besten aber ein Feld "Berechnet zur Anzeige".

Dein Code:

Code:
  <tr>
<td>Zeit</td>
    <td >Name des Besuchers</td>
    <td >Besucher für</td>
    <td>Raum</td>
    <td>Anlass</td>

  </tr>

  <tr>
   <td> von <Berechneter Wert> bis <Berechneter Wert> Uhr</td>
    <td><Berechneter Wert> </td>
    <td> <Berechneter Wert></td>
    <td> <Berechneter Wert> </td>
    <td><Berechneter Wert></td>


  </tr>

</table>

USW...



Joa das klappt... vielen DANK !!!!
Titel: Re: HTML Tabelle
Beitrag von: pete_bla am 27.08.07 - 15:36:04
@Axel, keine Diskussion bezüglich der Performance von mehreren Lookups. war hier nur ein beispiel, auch wenn etwas unglücklich gewählt.
Wenn wir aber von "sauberem Code" reden, dann bitte noch @IsError() für den Lookup nicht vergessen.
Im Web ist dies sonst besonders spannend, wenn man den Fehler wegen einem Lookup nicht findet.



Titel: Re: HTML Tabelle
Beitrag von: hwenck am 27.08.07 - 17:12:58
keine der Lösungen überzeugt mich.
Gerade für jemand der neu in der Web-Umsetzung von Lotus ist sollte sich ein Konzept überlegen, das auch
für Ihn allgemein Anwendung finden kann.
Masken mit berechneten Feldern stellen sicher nicht einen Lösungsansatz dar.


@pete_bla:
Oder du bettest eine Ansicht ein und gibst an, dass "HTML" verwendet werden soll (statt Java-Applett).
(Eigenschaft des "Eingebettete Ansicht-Objekts" in der Maske)
Dann erledigt Notes/Domino das für dich.

Hier sehe ich den für mich guten Ansatz. Allerdings nicht in der Aussage 'Dann erledigt Notes/Domino das für dich.'

Ich erlaube mir ein Beispiel zum zerreißen anzubieten.
Grundlegende Elemente dieser DB habe ich vor Jahren in diesem Forum gefunden.

Ich hoffe nicht gegen eine Regel zu verstoßen.

Titel: Re: HTML Tabelle
Beitrag von: flaite am 27.08.07 - 17:41:17
Dein Angebot ist eher umständlicher als die oben vorgeschlagene Lösungen.
Hier gings ja nur darum um Elemente eines Mehrfachwerte Feldes ein bischen html zu schreiben. Und deine Lösung zielt erscheint mir auf ein anderes Problemfeld abzuzielen (ein bischen html um die Werte in einer Ansicht zu schreiben). 
 
Nicht das ich das Generieren von html durch von aus einer Notes-View generierten JavaScript-Aufrufen grundsätzlich ablehnen würde (wofür es Gründe gäbe).
Übrigens gilt document.write als unfein. Man macht das heute mit document.getElementById(<id>).innerHtml .

Trotzdem: Nettes  Beispiel, dass sich hoffentlich viele Anschauen werden.