Autor Thema: Tabellen trennen?  (Gelesen 2243 mal)

Offline Julgo

  • Frischling
  • *
  • Beiträge: 2
Tabellen trennen?
« am: 10.05.11 - 14:25:02 »
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)

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Tabellen trennen?
« Antwort #1 am: 16.05.11 - 13:18:15 »
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.
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Tabellen trennen?
« Antwort #2 am: 16.05.11 - 15:59:45 »
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
?

EDIT: Irgendwie bin ich heute blind - overviewtempstring wird ja vor If i=15 in den Stream geschrieben - Schade, kann wohl leider doch nicht helfen  :(
« Letzte Änderung: 16.05.11 - 16:15:41 von marschul »
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Tabellen trennen?
« Antwort #3 am: 17.05.11 - 11:46:20 »
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

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>

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!
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz