Autor Thema: Tabellenzeile anfügen und befüllen  (Gelesen 3190 mal)

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Tabellenzeile anfügen und befüllen
« am: 12.02.09 - 16:13:12 »
Hallo at-Notesgemeinde,

ich stehe mal wieder vor einem Problem:

Ich erstelle in einem Sub eine Tabelle mit zwei Zeilen in einem Rich Text Item und befüllen diese beiden Zeilen. Danach verlasse ich den Sub. Nach ausführen eines weiteren Codeabschnittes springe ich wieder in den Tabellensub und möchte der Tabelle eine Zeile anhängen und diese wiederum mit Werte befüllen. Ich schaffe es zwar ohne Probleme die Zeile mit addrow anzuhängen, jedoch weiß ich dann nicht wie ich mit dem Rich Text Navigator an den Anfang dieser neuen Zeile komme, um danach die anderen Zellen zu befüllen.

Wen ich es mit "FindLastElement( RTELEM_TYPE_TABLE )", dann addrow und danach mit FindNextElement( RTELEM_TYPE_TABLECELL ) versuche, stehen ich leider wieder in der ersten zeile.

Kann mir jemand weiterhelfen?


Gruß Hupfi
« Letzte Änderung: 17.02.09 - 15:32:15 von hupfi »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Tabellenzeile anfügen und befüllen
« Antwort #1 am: 12.02.09 - 16:54:01 »
Ich verstehe es nicht ganz, wie kommst du darauf dass FindNextElement nicht auf die erste Zeile positionieren soll. Eventuell sollte dein FindLastElement nach einem RTELEM_TYPE_TABLECELL suchen und nicht nach einem RTELEM_TYPE_TABLE.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Re: Tabellenzeile anfügen und befüllen
« Antwort #2 am: 12.02.09 - 16:57:51 »
Mit FindLastElement RTELEM_TYPE_TABLECELL habe ich es auch schon probiert. Da erhalte ich eine Fehlermeldung  :-:

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Tabellenzeile anfügen und befüllen
« Antwort #3 am: 12.02.09 - 17:04:44 »
Ich denke da wirst du nicht darum herumkommen, den Code in einer abgespeckten Version zu posten. Sonst wird man wohl schwer draufkommen.

Grüße

Ralf

P.S. Was für eine Fehlermeldung
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Re: Tabellenzeile anfügen und befüllen
« Antwort #4 am: 13.02.09 - 14:03:02 »
Erhalte die Fehlermeldung "Cannot get elements of this type".
Code folgt.

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Re: Tabellenzeile anfügen und befüllen
« Antwort #5 am: 16.02.09 - 15:33:30 »
So etwas verspätet folgt nun auch der Code meiner Tabellenbefüllung:

Code
Set rtiBody = MailDoc.GetFirstItem( "Body" )
rtiBody.AddNewline(1)
	
'First Entry ?
	If  ScriptError = False Then
		
		'Erstellen der ersten zwei Tabellenzeilen und befüllen
		
		rtiBody.AppendText( TEXTERROR )
			
		Set styles(1) = session.CreateRichTextParagraphStyle
		Set styles(2) = session.CreateRichTextParagraphStyle
		Set styles(3) = session.CreateRichTextParagraphStyle
		Set styles(4) = session.CreateRichTextParagraphStyle
		Set styles(5) = session.CreateRichTextParagraphStyle
			
		styles(1).LeftMargin 		= 0
		styles(1).SpacingAbove		= SPACING_ONE_POINT_25
		styles(1).FirstLineLeftMargin	= 0
		styles(1).RightMargin 		= RULER_ONE_INCH*2.5
		styles(1).Alignment 		= ALIGN_LEFT
		styles(2).LeftMargin 		= 0
		styles(2).SpacingAbove		= SPACING_ONE_POINT_25
		styles(2).FirstLineLeftMargin	= 0
		styles(2).RightMargin 		= RULER_ONE_INCH*2.5
		styles(2).Alignment 		= ALIGN_LEFT
		styles(3).LeftMargin 		= 0
		styles(3).SpacingAbove		= SPACING_ONE_POINT_25
		styles(3).FirstLineLeftMargin	= 0
		styles(3).RightMargin 		= RULER_ONE_INCH*2.5
		styles(3).Alignment 		= ALIGN_LEFT
		styles(4).LeftMargin 		= 0
		styles(4).SpacingAbove		= SPACING_ONE_POINT_25
		styles(4).FirstLineLeftMargin	= 0
		styles(4).RightMargin 		= RULER_ONE_INCH*2.5
		styles(4).Alignment 		= ALIGN_LEFT
		styles(5).LeftMargin 		= 0
		styles(5).SpacingAbove		= SPACING_ONE_POINT_25
		styles(5).FirstLineLeftMargin	= 0
		styles(5).RightMargin 		= RULER_ONE_INCH*1.5
		styles(5).Alignment 		= ALIGN_LEFT
		Call rtiBody.AppendTable(2,5,,,styles)
			
		Set rtnav = rtiBody.CreateNavigator
		Call rtnav.FindLastElement( RTELEM_TYPE_TABLE)
		Set rtt = rtnav.GetElement
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL, 1 )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "Name" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "DocType" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorMessage" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorLine" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "DocLink" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL, 1 )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText("Name")
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "DocType" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorMessage" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorLine" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendDocLink( targetDoc, "" )
		Call rtiBody.EndInsert
			
	Else
			
		'hinzufüngen einer weiteren Tabellenzeile
			
		Set rtnav = rtiBody.CreateNavigator
		Call rtnav.FindLastElement( RTELEM_TYPE_TABLE )
		Set rtt = rtnav.GetElement
		rtt.AddRow
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "Name" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "DocType" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorMessage" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendText( "ErrorLine" )
		Call rtiBody.EndInsert
			
		Call rtnav.FindNextElement( RTELEM_TYPE_TABLECELL )
		Call rtiBody.BeginInsert(rtnav)
		Call rtiBody.AppendDocLink( targetDoc, "" )
		Call rtiBody.EndInsert
			
	End If

Mit diesem springe ich jedoch vor dem befüllen der neuen Werte in die erste Zeile.
Wie kann ich dies verhindern und bewerkstelligen, dass ich die letzte neu hinzugefügte Tabellenzeile befüllen kann?


Gruß Hupfi
« Letzte Änderung: 16.02.09 - 15:35:02 von hupfi »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Tabellenzeile anfügen und befüllen
« Antwort #6 am: 16.02.09 - 15:50:52 »
Hm das ist der falsche Code, du wolltest den Code posten in dem der Fehler auftritt. Der Code wie er jetzt ist kann gar nicht funktionieren, da du dich immer wieder auf die erste Zeile positionierst. Ich würde als auf die letzte Zelle positionieren mit
Call rtnav.FindLastElement( RTELEM_TYPE_TABLE_CELL )

Da du aber von diesem rtnav dann kein getElement machen kannst, da du dann die Fehlermeldung erhälst. Brauchst du einen zweiten Richtextnavigator mit dem du die Tabelle erweitern kannst.

Das ganze sollte dann also so aussehen.
Call rtnav.FindLastElement( RTELEM_TYPE_TABLE_CELL )
Call rtnav2.FindLastElement( RTELEM_TYPE_TABLE )
Set rtt =rtnav2.getElement
rtt.AddRow
.....

Ich habe es zwar nicht probiert, aber so würde ich es machen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline hupfi

  • Junior Mitglied
  • **
  • Beiträge: 73
Re: Tabellenzeile anfügen und befüllen
« Antwort #7 am: 17.02.09 - 15:29:30 »
Vielen Danke für deine Tipps Ralf,

Habe es ausprobiert es funktioniert.


Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Tabellenzeile anfügen und befüllen
« Antwort #8 am: 18.02.09 - 07:58:30 »
Bitte nichts zu danken.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz