Domino 9 und frühere Versionen > ND7: Entwicklung

Tabellen trennen?

(1/1)

Julgo:
Hallo zusammen,
ich habe zwei Tabellen, welche jeweils in temporäre Strings eingelesen und dann getrennt ausgegeben werden sollen, jedoch wird die zweite Tabelle in der ersten verschachtelt. Wie kann ich das umgehen?
(Deklarationen etc. kürze ich mal raus)


--- Code: ---' OVERVIEW  <---- ANFANG DER ERSTEN TABELLE
Call overviewstream.WriteText(cssstyle)

overviewtempstring = |<p><table  border="1"><tr><td><b>Customer Name</b></td><td><b>Material Group</b></td><td><b>Date (From)   </b></td><td><b>Date (to)   </b></td><td><b>Increase</b></td><td><b>Measure Of Increase</b></td><td><b>Comment</b></td></tr><tr>|


While (Not Doc Is Nothing)
For i = 1 To 15
' Material Group is critical and may not be empty

If Cstr(doc.GetItemValue("vaPPMATKL_"&i)(0)) <> "" Then

overviewtempstring = overviewtempstring + "<td>"

If Cstr(doc.AK_Firma1(0)) <> "" Then ' Company
overviewtempstring = overviewtempstring + Cstr(doc.AK_Firma1(0))
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.GetItemValue("vaPPMATKL_"&i)(0)) <> "" Then 'Material Group
overviewtempstring = overviewtempstring +  doc.GetItemValue("vaPPMATKL_"&i)(0)
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.vaPPFromDate(0)) <> "" Then 'Date From
overviewtempstring = overviewtempstring + Cstr(doc.vaPPFromDate(0))
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.vaPPToDate(0)) <> "" Then 'Datum To
overviewtempstring = overviewtempstring + Cstr(doc.vaPPToDate(0))
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.GetItemValue("vaPPIncrease_"&i)(0)) <> "" Then 'Increase
overviewtempstring = overviewtempstring + Cstr(doc.GetItemValue("vaPPIncrease_"&i)(0))
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.GetItemValue("vaIPPUoM_"&i)(0)) <> "" Then 'Measure of Increase
overviewtempstring = overviewtempstring + doc.GetItemValue("vaIPPUoM_"&i)(0)
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td><td>"


If Cstr(doc.GetItemValue("vaPPComment_"&i)(0)) <> "" Then 'Comment
overviewtempstring = overviewtempstring + doc.GetItemValue("vaPPComment_"&i)(0)
Else
overviewtempstring = overviewtempstring + "-"
End If
overviewtempstring = overviewtempstring + "</td></tr>"

Call overviewstream.WriteText(overviewtempstring)
overviewtempstring = ""

End If


If i = 15 Then  <---- ENDE DER ERSTEN TABELLE
Call overviewstream.WriteText("</table>")
End If

If Debug = True Then 
'Summarize <--- ANFANG DER ZWEITEN TABELLE

If i = 1 Then
weekstring = |<p><table  border="1"><tr><td><b>Material Group</b></td><b>Measure Of Increase</b></td><td><b>Calendar Week</b></td><td><b>Year         </b></td><td><b>Increase per Calendar Week</b></td></tr><tr>|
End If

Set dateTimeStart = New NotesDateTime(doc.vaPPFromDate(0))
Set dateTimeEnd = New NotesDateTime (doc.vaPPToDate(0))

TimeDiffSec = dateTimeEnd.TimeDifference(dateTimeStart) + 86400

If Cstr(doc.GetItemValue("vaPPMATKL_"&i)(0)) <> "" Then ' Material Group
If Cstr(doc.GetItemValue("vaIPPUoM_"&i)(0)) <> "" Then ' Unit Of Measure
If Cstr(doc.GetItemValue("vaPPIncrease_"&i)(0)) <> "" Then ' Increase

Dim weekNo As Integer
Dim yearNo As Integer
Dim IncrPerDay As Double

While Cdat(dateTimeStart.DateOnly) <= Cdat(dateTimeEnd.DateOnly)
weekNo =  CalculateWeekNo(Cdat(dateTimeStart.DateOnly))
yearNo = Year(dateTimeStart.DateOnly)

SumKey = Cstr(doc.GetItemValue("vaPPMATKL_"&i)(0)) & "|" & Cstr(doc.GetItemValue("vaIPPUoM_"&i)(0)) & "|" & Cstr(weekNo) & "|" & Cstr(yearNo)
Increase = Cstr(doc.GetItemValue("vaPPIncrease_"&i)(0))
IncrPerDay= (Increase/ (TimeDiffSec / 86400)) '86400 sec.= 1day
'IncrPerWeek = Cstr(doc.GetItemValue("vaPPIncrease_"&i)(0) / (TimeDiffSec/604800))   'One week has 604800 seconds

If Iselement (overviewlist(SumKey)) Then
overviewlist(SumKey) = overviewlist(SumKey) + IncrPerDay 
Else
overviewlist(SumKey) = IncrPerDay
End If
datetimestart.AdjustDay(+1)
Wend
End If
End If
End If

End If

Next i
Set doc = view.GetNextDocument(doc)
Wend


i = 0
Forall item In overviewlist
delim = "|"
SplitOutput = Split (Listtag(item), delim)
weekstring = weekstring + SplitOutput(0) + "</td>"
weekstring = weekstring + SplitOutput(1) + "</td>"
weekstring = weekstring + SplitOutput(2) + "</td>"
weekstring = weekstring + SplitOutput(3) + "</td>" + item + "</td></tr>" 
i = i + 1
End Forall

weekstring = weekstring + "</table>"  <--- ENDE DER ZWEITEN TABELLE

Else
overviewtempstring = "Nothing found!"
End If

Call overviewstream.WriteText(overviewtempstring)
Call overviewstream.WriteText(weekstring)
--- Ende Code ---

marschul:
Die 2. Tabelle legst Du an, wenn i=1 ist. Da ist die erste Tabelle aber noch gar nicht geschlossen, denn das machst Du erst, wenn i=15 ist. Damit "landet" die 2. Tabelle natürlich in der Zelle, die bei i=1 gerade zuletzt bearbeitet wurde.

marschul:
Ach, was schreibe ich denn da für'n Quatsch ??? Sehe gerade, dass Du da 2 unterschiedliche Stringvariablen verwendest, jede für eine Tabelle und erst am Ende werden die zusammengewürfelt.
ABER: </table> für die erste Tabelle schreibst Du direkt in den Stream, wenn i=15 ist, während Du den Inhalt der Tabelle (overviewtempstring) erst am Ende in den Stream schreibst (vor weekstring).
Sollte es nicht besser lauten

--- Code: ---If i = 15 Then  <---- ENDE DER ERSTEN TABELLE
  overviewtempstring = overviewtempstring & "</table>"
End If
--- Ende Code ---
?

EDIT: Irgendwie bin ich heute blind - overviewtempstring wird ja vor If i=15 in den Stream geschrieben - Schade, kann wohl leider doch nicht helfen  :(

marschul:
So, jetzt aber: Hast Du Dir schon mal das Ergebnis angeschaut? Habe Dein Script mal übernommen und auf das Nötigste reduziert:


--- Code: ---Sub Click(Source As Button)

Dim oSession As New NotesSession
Dim oDB As NotesDatabase, oView As NotesView, Doc As NotesDocument
Dim sTarget As String, overviewtempstring As String, weekstring As String

overviewtempstring = |<p><table  border="1"><tr><td><b>Customer Name</b></td><td><b>Material Group</b></td><td><b>Date (From)   </b></td><td><b>Date (to)   </b></td><td><b>Increase</b></td><td><b>Measure Of Increase</b></td><td><b>Comment</b></td></tr><tr>|
Set oDB = oSession.CurrentDatabase
Set oView = oDB.GetView("AllByForm")
Set Doc = oView.GetFirstDocument
sTarget = ""

While (Not Doc Is Nothing)
For i = 1 To 15
overviewtempstring = overviewtempstring + "<td>"
overviewtempstring = overviewtempstring + doc.Form(0)
overviewtempstring = overviewtempstring + "</td></tr>"
sTarget = sTarget + overviewtempstring
overviewtempstring = ""
If i = 15 Then  '<---- ENDE DER ERSTEN TABELLE
sTarget = sTarget + ("</table>")
End If
If i = 1 Then
weekstring = |<p><table  border="1"><tr><td><b>Material Group</b></td><b>Measure Of Increase</b></td><td><b>Calendar Week</b></td><td><b>Year         </b></td><td><b>Increase per Calendar Week</b></td></tr><tr>|
End If
Next i
Set doc = oView.GetNextDocument(doc)
Wend
weekstring = weekstring + "</table>"  '<--- ENDE DER ZWEITEN TABELLE

sTarget = sTarget & overviewtempstring
sTarget = sTarget & weekstring

Set Doc = oDB.CreateDocument
Doc.Form = "NurEinText"
Doc.NurEinText = sTarget
Doc.Save True, False

End Sub
--- Ende Code ---

Herausgekommen ist folgender String, der wohl HTML sein soll:

--- Code: ---<p><table  border="1"><tr><td><b>Customer Name</b></td>
<td><b>Material Group</b></td><td><b>Date (From)   </b></td><td><b>
Date (to)   </b></td><td><b>Increase</b></td><td><b>Measure Of Increase</b>
</td><td><b>Comment</b></td></tr><tr><td>fSammelKonten</td>
</tr><td>fSammelKonten</td></tr><td>fSammelKonten</td></tr><td>fSammelKonten</td>
</tr><td>fSammelKonten</td></tr><td>fSammelKonten</td></tr><td>fSammelKonten</td>
</tr><td>fSammelKonten</td></tr><td>fSammelKonten</td></tr><td>fSammelKonten</td>
</tr><td>fSammelKonten</td></tr><td>fSammelKonten</td></tr><td>fSammelKonten</td>
</tr><td>fSammelKonten</td></tr><td>fSammelKonten</td></tr></table><td>MainTopic</td>
</tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td>
</tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td>
</tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td></tr><td>MainTopic</td>
</tr><td>MainTopic</td></tr><td>MainTopic</td></tr></table><td>NurEinBody</td></tr>
<td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr></table><td>NurEinBody</td></tr>
<td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr></table><td>NurEinBody</td></tr>
<td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr></table><td>NurEinBody</td></tr>
<td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr><td>NurEinBody</td>
</tr><td>NurEinBody</td></tr><td>NurEinBody</td></tr></table><td>NurEinText</td></tr>
<td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr></table><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr></table><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr></table><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr></table><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td></tr><td>NurEinText</td>
</tr><td>NurEinText</td></tr>
<td>NurEinText</td></tr></table><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td>
</tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td>
</tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr>
<td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr>
<td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr><td>sfEmbededEditor</td></tr>
<td>sfEmbededEditor</td></tr></table><td>Test Body zweimal</td></tr><td>Test Body zweimal</td>
</tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td>
</tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td>
</tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td>
</tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td></tr><td>Test Body zweimal</td>
</tr><td>Test Body zweimal</td></tr></table><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td>
</tr><td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr></table><td>TestAuswahlMehrereAliase</td>
</tr><td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
<td>TestAuswahlMehrereAliase</td></tr><td>TestAuswahlMehrereAliase</td></tr>
</table><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr>
<td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td>
</tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td>
</tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td>
</tr></table><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td>
</tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr>
<td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr>
<td>Textfeld</td></tr><td>Textfeld</td></tr><td>Textfeld</td></tr></table>
<p><table  border="1"><tr><td><b>Material Group</b></td><b>Measure Of Increase</b></td>
<td><b>Calendar Week</b></td><td><b>Year         </b></td>
<td><b>Increase per Calendar Week</b></td></tr><tr></table>
--- Ende Code ---

Darin fällt auf, dass die erste Tabelle nicht nur einmal, sondern für jedes Dokument einmal geschlossen wird. Anschließend geht's dann munter weiter mit Tabellenzeilen/-spalten.

'Wenn i=15 schreibe </table>' führst Du bei jedem Dokument durch!

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln