Autor Thema: Tabellen trennen?  (Gelesen 2198 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