Archive for: ‘Dezember 2011’

Tierpsychologie – Wie tickt der Stubentiger?

6. Dezember 2011 Posted by Alexander Kluge

Neuer Fokus in der Großforschung: Feliden statt Higgs-Boson
/RT @TeraEuro

Das beliebteste Haustier der Welt ist zugleich eines der rätselhaftesten.

IBM CMO Studie – Von Herausforderungen zu Chancen

5. Dezember 2011 Posted by Petra Baeuerle

Wie in meinem letzten Blogpost angekündigt werde ich heute über die deutschen Ergebnisse der CMO Studie schreiben. Gleich
vorweg: die Studie ist derzeit noch nicht verfügbar, wird aber bald auf dieser Seite zu finden sein. Derzeit sind die Ergebnisse noch den
deutschen CMOs vorbehalten, die an der Studie mitgewirkt haben. Im Mai hatten mein IBM Kollege Joachim Kirschner und ich mit
Oliver Holzwarth, Senior VP bei Schenker Deutschland AG das CMO Interview geführt. Nachdem nun die deutschen Ergebnisse zur Verfügung stehen
haben wir vor Kurzem das Debriefing mit H. Holzwarth besprochen. Ich erinnere mich noch gut an unser Interview zur Studie. Schon damals war
Social Media ein vieldiskutiertes Thema. Jetzt empfängt uns Herr Holzwarth mit den Teilnehmer-Unterlagen eines Social Media Kongresses. Damit
waren wir schon mitten in einer fachlichen Diskussion. "Heute weiß ich viel mehr über Social Media und die Bedeutung ist seit der Befragung
für uns noch mehr gewachsen" sagt Herr Holzwarth. Dazu passen die Ergebnisse der CMO Studie perfekt. Aber eines nach dem anderen.
Es ist nicht neu, daß sich CMOs mit großen Veränderungen in den kommenden Jahren konfrontiert sehen. Der CMO eines Konsumgüterherstellers aus
Singapur hat es treffend beschrieben "Die perfekte Lösung besteht darin, jedem einzelnen Kunden individuellen Service zu bieten. Das Problem?
Es gibt sieben Milliarden von Ihnen."

Die digitale Revolution verändert den Markt. Kunden haben heute mehr Macht und mehr Möglichkeiten als je zuvor. Wie Röntgenbilder ermöglichen
Informations- und Kommunikationstechnologien nie dagewesene Einblicke in Unternehmen und Behörden. Der Verbraucher hat natürlich auch eine
größere Erwartungshaltung Unternehmen und Behörden gegenüber und hat durch die Globalisierung weltweit mehr Auswahl. Dazu kommt,daß jeder
durch die sozialen Netzwerke die Rolle eines Kritikers, Zeitungsverlegers oder Rundfunksenders übernehmen kann. Ein registrierter Facebook
Nutzer verfasst durchschnittlich 90 Beiträge je Monat. Alle Twitter Nutzer versenden 140 Millionen Tweets pro Tag. Auf YouTube werden in 60
Tagen mehr Videoinhalte online gestellt als die drei größten US-Fernsehsender in 60 Jahren produzierten. Diese Daten liefern wertvolle Informationen
für Unternehmen, sofern es sie analysieren kann. Etwas drastischer ausgedrückt: wir erzeugen heute alle zwei Tage so viele Informationen, wie vom
Anbeginn der Zivilisation bis 2003 produziert wurden. Nach diesem Beispiel war in der Diskussion zwischen H. Holzwarthund uns eine kurze Pause.
Beeindruckend und erschreckend zugleich. Doch was macht ein CMO mit dieser Fülle an unstrukturierten Daten? CMOs müssen mehr leisten als je zuvor.
Sie müssen größere Datenmengen managen und anspruchsvollere Kunden verstehen. Sie müssen mit Technologien und Tools umgehen,
von denen ihre Kinder meist mehr verstehen als sie selbst.
 
79 % der CMOs rechnen mit erhöhter Komplexität aber nur 48 % glauben, daß sie für diese Komplexität gerüstet sind. Dabei sind bei den Marktfaktoren
zwischen 71% und 56 % der CMOs nicht ausreichend gerüstet. Setzt man diese Faktoren noch in Beziehung zu den Auswirkungen auf Marketing,
so zeigen sich vier Faktoren an der Spitze: Datenexplosion, Social Media, Wachsende Zahl von Kommunikationskanälen und die Änderungen im Verbraucherverhalten.
Bild

Im Chart kann man die Abhängigkeiten deutlich erkennen: die
Datenexplosion erhält die höchste Bedeutung bei den CMOs. Da sie
aber schon länger bekannt ist erscheint sie nicht so weit rechts auf der
x-Achse. Auf Social Media sind die CMOs besser vorbereitet, sehen aber
größere Auswirkungen auf die Fachabteilung.
Die wachsende Zahl an Tablets und mobiler Endgeräte gewinnt an Priorität.
Daher sehen auch die meisten CMOs hierbei den größten Einfluss auf die
Marketingabteilung, sind aber besser darauf vorbereitet.
Die Änderungen im Verbraucherverhalten sind schon seit einiger Zeit bekannt.
Dennoch glauben die CMOs, daß sie bei weitem nicht ausreichend vorbereitet sind.
 
 
 
 
 

Aus den bisherigen Erkenntnissen ergeben sich 3 Bereiche bei denen die CMOs Verbesserungen erzielen müssen:
  • Kunden der neuen Generation einen Nutzen bieten
  • Dauerhafte Beziehungen aufbauen und pflegen
  • Wert schaffen und Ergebnisse messen.
Auf diese drei Bereiche werde ich in meinem nächsten Beitrag genauer eingehen.

Doch zurück zu unserem Gespräch  mit Herrn Holzwarth. Er sieht sich heute in einer deutlich besseren Position zu Social Media als bei unserem
letzten Gespräch vor 6 Monaten. Interessant war auch zu sehen, inwieweit sich die Ergebnisse zwischen Global, Deutschland und der Industrie
unterscheiden. Wir konnten in dem eigens für die Studie zur Verfügung gestellten Analysetool genau erkennen wie sich die Ergebnisse unterscheiden.
Im Einzelfall ist das sehr interessant, vorallem wenn man dies mit den eigenen Antworten vergleichen kann. Gesamtheitlich betrachtet sind jedoch die
Unterschiede nicht wesentlich.
 
"Jetzt habe ich eine Bestätigung meiner persönlichen Meinung und Einschätzung. Es gibt jetzt keine Ausflüchte mehr bei der Umsetzung der
Herausforderungen" meint Herr Holzwarth nach unserem Gespräch.
 
Wir verabschieden uns nach über 2 Stunden reger Diskussion von H. Holzwarth. Er fragt uns "Wann sehen wir uns wieder?" Sehr gerne bei unserer
nächsten CMO Studie.

Herzlichen Dank an Herrn Holzwarth, der mich durch unser Gespräch für diesen Blogpost inspiriert hat.

Der neue HTTP Header ‘X-XspRefreshId’

5. Dezember 2011 Posted by Sven Hasselbach

Mit Domino 8.5.3 ist der neue HTTP Header ‘X-XspRefreshId’ eingeführt worden, mit dem sich die refreshId eines Partial Refreshs vom Server aus verändern lässt. Dadurch ist es möglich, ein Element zu refreshen, dass Ergebnis dieser Operation jedoch auf ein anderes Element im Client anzuwenden.

Hier ein kleines Beispiel anhand einer XPage, die vor dem Partial Refresh wie folgt aussieht:

Screenshot: Vor dem Partial Refresh

Der Code der XPage ist ebenfalls simpel, ausser das bei einem Partial Refresh der XPage ein Header an den Request angefügt wird. Dazu wird das Event afterRestoreView genutzt.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:this.afterRestoreView><![CDATA[#{javascript:
        var exCon = facesContext.getExternalContext();
        var writer = facesContext.getResponseWriter();
        var response = exCon.getResponse();
        response.setHeader("X-XspRefreshId",  getClientId('label2') ); }]]>
    </xp:this.afterRestoreView>

    <xp:button value="Label" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="label1">
        </xp:eventHandler>
    </xp:button>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:label value="Label1" id="label1"></xp:label>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:label value="Label2" id="label2"></xp:label>
</xp:view>

Der Button löst einen Partial Refresh auf das Label label1 aus, der dazugehörige Request, der an den Server gesendet wird liefert auch den zu erwartenden HTML-Code zurück:

<span id="view:_id1:label1" class="xspTextLabel">Label1</span>

Doch nun kommt der zusätzliche Header ins Spiel. Er bewirkt, dass nicht das label1 ersetzt wird, sondern das Element label2:

Durch den in der HTTP Header in der Antwort des Servers wurde das XSP-Objekt dazu veranlasst, den HTML-Code im DOM-Baum an einer anderen Stelle zu ersetzen.

In diesem kleinen Beispiel tritt ein kleiner Seiteneffekt auf: Das Label mit der id label2 verschwindet komplett aus dem DOM-Baum. Betätigt man den Button ein zweites Mal, funktioniert der Refresh nicht mehr, und folgende Fehlermeldung erscheint im Browser:

Enterprise 2.0: Ist Deutschland ein Kollaborations-Schwellenland? | pr-blogger.de

5. Dezember 2011 Posted by Stefan Pfeiffer

Zum Thema Enterprise 2.0 gibt es derzeit jedoch zwei Wahrheiten, bzw. eine licht- und eine Schattenseite: Im öffentlichen Rampenlicht stehen erfolgreiche Beispiele, wie Unternehmen mit internen Öffentlichkeiten, geteiltem Wissen oder schnellen Kommunikationstools ein neues unternehmerisches Betriebssystem geschaffen haben und außergewöhnliche Erfolge erzielen. So weit, so wahr und doch zu kurz gegriffen.

Die Kehrseite der Enterprise2.0-Saga wird meist von den Praktikern hinter vorgehaltener Hand erzählt: Mitarbeiter nutzen die frischen neuen Tools nicht, sondern bleiben beim bewährten „Laufwerk C“. Kunden und Partner, die sonst immer und überall dringenden Gesprächsbedarf haben, verweigern den Austausch auf der nagelneuen Plattform ...

In dem Beitrag stecken sicherlich viele korrekte Aussagen. Insbesondere die Beobachtung, dass die Unternehmenskultur - und ich füge Führungskultur hinzu - Social Media oder Social Business unterstützen muss, ist wahr. Eine Kultur des Teilens muss gefördert und vorgelebt und der herkömmlichen Kultur des Herrschschaftswissens entgegengesetzt werden. Und da müssen wir noch einen sehr weiten Weg gehen, sogar bei den Unternehmen, die schon beträchtliche Erfolge verbuchen können. Auch dort gibt es noch beträchtliche Widerstände reaktionäre Verhaltensweisen. Mit "Social" rütteln wir an jahrzehntelang erlernten Verhaltensmustern. Jedoch stehen wir in Deutschland nicht so schlecht da, wie Florian Semle konstatiert. Im Gegenteil. Zwar kann ich hier fundiert nur für meine Beobachtung von IBM-Kunden sprechen, aber hier sind wir in punkto erfolgreicher Social Business-Referenzen sind wir in Deutschland führend im Vergleich zu den anderen europäischen Ländern und gar den USA. Zugegebenermaßen hat mich das überrascht, aber stimmt mich deswegen gerade auch sehr positiv.

Lesenswert in diesem Zusammenhang auch der Beitrag von Gunnar Sohn in seinem Blog.

Lotus Notes und Domino 8.5.2 Fix Pack 4

5. Dezember 2011 Posted by Oliver Regelmann

Das Fix Pack 4 für Notes und Domino 8.5.2 behebt wieder eine Reihe von Fehlern. Die Installation wird empfohlen, wenn man nicht auf 8.5.3 gehen kann oder möchte.

Release Notice

Download Options

Corpus Delicti – Das Geheimnis der fünften Tür

5. Dezember 2011 Posted by Alexander Kluge

Frau Katz hat neulich eine Maus ordnungsgemäß im Schlafzimmer abgeliefert und sich dafür feiern lassen. Die Feier fand statt. Die Maus blieb seitdem verschwunden.

Im fünften Türchen fand sich nun der Corpus Delicti. Seit heute wissen wir, wovon die Maus lebt.

Abbrechen eines Partial Refresh im Client

4. Dezember 2011 Posted by Sven Hasselbach

Leider bietet das XSP-Objekt keine Möglichkeit, einen Partial Refresh via CSJS vorzeitig zu beenden. Zwar basiert der Partial Refresh-Mechanismus auf dojo.xhr-Requests, die diese Funktionalität bieten, doch das XSP-Objekt stellt keine Möglichkeit zur Verfügung, auf die darunter liegenden Dojo-Objekte zuzugreifen.

Um dennoch Zugriff auf die Requests zu erhalten, müssen die Aufrufe von dojo.xhrGet und dojo.xhrPost daher direkt abgefangen und umgebogen werden. Dadurch kann auf das  zurück gelieferte dojo.Deferred-Objekt zugegriffen werden und es lassen sich dessen Methoden verwenden.

Hier ein kleines Beispielskript, dass diese Aufgabe verrichtet. Es muss in einen CSJS-Scriptblock eingebettet werden:

var xhrCall = null;

dojo.addOnLoad( function(){
   /*** hijack dojo's xhrRequest ***/
   dojo._xhrPost = dojo.xhrPost;
   dojo._xhrGet = dojo.xhrGet;

   dojo.xhrPost = function( args ){
      xhrCall = dojo._xhrPost( args );
   }

   dojo.xhrGet = function( args ){
      xhrCall = dojo._xhrGet( args );
   }
});

Will man nun im Client einen Partial Refresh abbrechen, muss nur die cancel-Methode des dojo.Deferred-Objektes aufgerufen werden, und der Partial Refresh wird beendet*:

xhrCall.cancel();

[Die Methode cancel ist unter Dojo 1.3 dokumentiert; in höheren Versionen ist sie aber aus Kompatibilitätsgründen weiterhin vorhanden.]

Das Abbrechen eines Requestes wird allerdings als Partial Refresh-Fehler betrachtet. Um die Popup-Meldung des XSP-Objekts zu unterbinden, muss dem Partial Refresh noch ein eigener Error-Handler mitgegeben werden. Dieser darf ruhig leer sein, er sorgt nur dafür, daß die Fehlermeldung unterdrückt wird:

XSP.partialRefreshGet('id', { onError: function(){} } );

*: Der eigentliche AJAX-Request wird nicht abgebrochen, sondern die weitere Verarbeitung im CSJS unterbunden.

hedersoft xmNavigator – Weiteres Projekt bei OpenNTF

2. Dezember 2011 Posted by Super User

Mit dem hedersoft xmNavigator (XPages Mobile Navigator) steht das nächste OpenNTF Projekt der hedersoft ab sofort kostenlos zur Verfügung. Kurz vor knapp konnte das Projekt noch für den 2. Development Contest von OpenNTF eingereicht werden (danke an alle Beteiligten).

Der hedersoft xmNavigator stellt einen zentralen Einstiegspunkt für mobile Anwendungen auf Smartphones dar. Durch die Nutzung von XPages und JQuery kann die Anwendung auf jedem mobilen Betriebssystem (iOS, Android, ...) genutzt werden.

Weiter Informationen finden Sie hier.

hedersoft xmNavigator – Weiteres Projekt bei OpenNTF

2. Dezember 2011 Posted by Super User

Mit dem hedersoft xmNavigator (XPages Mobile Navigator) steht das nächste OpenNTF Projekt der hedersoft ab sofort kostenlos zur Verfügung. Kurz vor knapp konnte das Projekt noch für den 2. Development Contest von OpenNTF eingereicht werden (danke an alle Beteiligten).

Der hedersoft xmNavigator stellt einen zentralen Einstiegspunkt für mobile Anwendungen auf Smartphones dar. Durch die Nutzung von XPages und JQuery kann die Anwendung auf jedem mobilen Betriebssystem (iOS, Android, ...) genutzt werden.

Weiter Informationen finden Sie hier.

XPages: Stolperfalle Recycling

2. Dezember 2011 Posted by airwolf89

Gestern hatte ich mal wieder eine schönes „Feature“ gefunden.

Aufgefallen ist dass eine XPage mit einer Null-Pointer Exception abgestürzt ist. Scheinbar war eine View-Datasource, dessen erstes Dokument ich mir holen wollte, nicht vorhanden.

Einige print-outs ergaben dass der Code mehrmals durchlaufen wird, was bei XPages, welche Editable Areas (Callbacks) benutzen, häufiger zu beobachten ist. Allerdings war die View bei Durchlauf 1 bis 3 noch vorhanden, beim 4. Durchlauf hatte es dann geknallt.

Nach vielen Hin und Her testen stand dann die Ursache fest. Ich hatte in einem Custom Control etwas eingebaut, wo auf eine Funktion in einer SSJS-Scriptlibrary aufgerufen wurde. In dieser Funktion wurde eine View referenziert und später wieder recycled. Normalerweise wäre hier kaum ein Zusammenhang zu erkennen. Aber, die Methode und meine XPage benutzten die gleiche View. Scheinbar ist es so, dass Designelemente nicht mehrfach referenziert werden.

D.h. wenn ich an vollkommen unterschiedlichen Stellen z.b. die gleiche View referenziere und auch nur eine davon recycle, dann werden alle Referenzen auf dieses Designelement gelöscht und es regnet entsprechende Null-Pointer Exception.

Die Lösung dieses Problems war denkbar einfach: Wir nahmen einfach das recycling aus dem Code. Normalerweise muss man auch nicht recyclen, da Domino das im Grunde selbst kann. Lediglich bei großen Schleifen wo viele Dokumente durchgeloopt werden sollte man über recycling nachdenken. Auf jeden Fall muss man aber darauf achten wie ich Designelemente referenziere um mir nicht den Ast abzusägen auf dem ich sitze.


Auch das gibt’s: Leere Inbox

2. Dezember 2011 Posted by Roberto Mazzoni

Normalerweise möchten Benutzer eine höhere Quota, weil ihnen die Mailbox überquillt. Jetzt hatten wir jemanden, der eine leere Inbox hatte und auf seinem iPhone mit leerer Inbox bei Zugriff via IMAP e ...

Subscription und Extra-Rabatt für DNUG Mitglieder zur Lotusphere 2012 – nur noch heute

2. Dezember 2011 Posted by Roswitha Boldt

 

DNUG Mitglieder sparen bei der Anmeldung zur Lotusphere 2012 100 USD; sie zahlen als Frühbucher 1.895 USD anstelle der bis dahin regulären 1.995 USD.

Anmeldelink und Buchungscode ...

 

Diese Konditionen gelten nur noch heute.

YouAtNotes auch 2012 als Aussteller auf der IBM Lotusphere 2012

2. Dezember 2011 Posted by Volkmar Fritz

YouAtNotes wird 2012 zum dritten Mal in Folge als Aussteller zur Lotusphere 2012 nach Orlando fahren. "Die Möglichkeit so viele international tätige Unternehmer und IT'ler zu treffen, die zu einem hoh ...

Bearbeitung von RichTextItems bringt Laufzeitfehler

2. Dezember 2011 Posted by Manfred Meise

Die programmatische Bearbeitung von RichText-Feldern ist Dank entsprechender LotusScript Klassen möglich, doch oftmals mühselig. So erstellten wir in diesen Tagen auf Kundenwunsch eine Schaltfläche in einer Maske, um in einem RichText Feld eine Tabelle (z.B. eine Agenda) zu erstellen. Diese funktionierte bei neuen Dokumenten wie gewünscht, jedoch nicht in Fällen, wo die Tabelle erst nach dem ersten Speichern des Dokumentes eingefügt werden sollte.

In diesen Fällen erscheinen Fehlermeldungen wir "Object Variable not set" oder auch "Type mismatch in method AssignClassInstance: AINSTANCE found, Unknown expected"
Image:Bearbeitung von RichTextItems bringt Laufzeitfehler
wenn man mit dem Body Feld der Kalendermaske mit folgendem Code:

 
Sub Click(Source As Button)
   
   Dim s                As New NotesSession
   Dim ws             As New NotesUIWorkspace
   Dim uiDoc       As NotesUIDocument
   Dim doc           As NotesDocument
   Dim body        As NotesRichTextItem
   Dim rtnav         As NotesRichTextNavigator
   
   ' - Get UI and BE document handles to current document
   Set uiDoc        = ws.CurrentDocument
   Set doc            = uiDoc.Document
   
   ' - Create or grab RT item
   If doc.IsNewNote Then
           doc.Form = "RT Tests"
           Set body = New NotesRichTextItem(doc,"Body")
   Else
           Set body = doc.GetFirstItem("Body")
   End If
   
     ' - Create a 4 column table in RT item
   Dim styles(1 To 4) As NotesRichTextParagraphStyle
   rowCount% = 5
   columnCount% = 4
   
   'Column 1
   Set styles(1) = s.CreateRichTextParagraphStyle
   styles(1).LeftMargin = 0
   styles(1).FirstLineLeftMargin = 0
   styles(1).RightMargin = RULER_ONE_CENTIMETER* 2
   
   'Column 2
   Set styles(2) = s.CreateRichTextParagraphStyle
   styles(2).LeftMargin = 0
   styles(2).FirstLineLeftMargin = 0
   styles(2).RightMargin = RULER_ONE_CENTIMETER* 17
   
   'Column 3
   Set styles(3) = s.CreateRichTextParagraphStyle
   styles(3).LeftMargin = 0
   styles(3).FirstLineLeftMargin = 0
   styles(3).RightMargin = RULER_ONE_CENTIMETER* 3
   
   'Column 4
   Set styles(4) = s.CreateRichTextParagraphStyle
   styles(4).LeftMargin = 0
   styles(4).FirstLineLeftMargin = 0
   styles(4).RightMargin = RULER_ONE_CENTIMETER* 2.5
   
   Call body.AppendTable(rowCount%, columnCount%,,,styles)
   
   ' - Populate table - the top row
   Set rtnav = body.CreateNavigator
   Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Nr.")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Thema")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Erlediger")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Zeit")
   Call body.EndInsert
   Call body.Update
   
   ' - Reopen document in order to load RT item into UI
   doc.SaveOptions = "0" ' make it possible to close the document without a "do you want to save" prompt.
   Call uidoc.Close(True)
   Set uidoc = ws.EditDocument(True, doc, , , , True)
   Call uidoc.Document.RemoveItem("SaveOptions")
   
End Sub

arbeitet.

Nach langer Analyse stellte ich fest, das die Ursache für den Laufzeitfehler (für mich nicht erklärbar) in der Definition der Feldhilfe
Image:Bearbeitung von RichTextItems bringt Laufzeitfehler
zu finden ist. Entfernt man diese, so wird mit

 
Set body = doc.GetFirstItem("Body")

auch das entsprechende Item gefunden.

Bearbeitung von RichTextItems bringt Laufzeitfehler

2. Dezember 2011 Posted by Manfred Meise

Die programmatische Bearbeitung von RichText-Feldern ist Dank entsprechender LotusScript Klassen möglich, doch oftmals mühselig. So erstellten wir in diesen Tagen auf Kundenwunsch eine Schaltfläche in einer Maske, um in einem RichText Feld eine Tabelle (z.B. eine Agenda) zu erstellen. Diese funktionierte bei neuen Dokumenten wie gewünscht, jedoch nicht in Fällen, wo die Tabelle erst nach dem ersten Speichern des Dokumentes eingefügt werden sollte.

In diesen Fällen erscheinen Fehlermeldungen wir "Object Variable not set" oder auch "Type mismatch in method AssignClassInstance: AINSTANCE found, Unknown expected"
Image:Bearbeitung von RichTextItems bringt Laufzeitfehler
wenn man mit dem Body Feld der Kalendermaske mit folgendem Code:

 
Sub Click(Source As Button)
   
   Dim s                As New NotesSession
   Dim ws             As New NotesUIWorkspace
   Dim uiDoc       As NotesUIDocument
   Dim doc           As NotesDocument
   Dim body        As NotesRichTextItem
   Dim rtnav         As NotesRichTextNavigator
   
   ' - Get UI and BE document handles to current document
   Set uiDoc        = ws.CurrentDocument
   Set doc            = uiDoc.Document
   
   ' - Create or grab RT item
   If doc.IsNewNote Then
           doc.Form = "RT Tests"
           Set body = New NotesRichTextItem(doc,"Body")
   Else
           Set body = doc.GetFirstItem("Body")
   End If
   
     ' - Create a 4 column table in RT item
   Dim styles(1 To 4) As NotesRichTextParagraphStyle
   rowCount% = 5
   columnCount% = 4
   
   'Column 1
   Set styles(1) = s.CreateRichTextParagraphStyle
   styles(1).LeftMargin = 0
   styles(1).FirstLineLeftMargin = 0
   styles(1).RightMargin = RULER_ONE_CENTIMETER* 2
   
   'Column 2
   Set styles(2) = s.CreateRichTextParagraphStyle
   styles(2).LeftMargin = 0
   styles(2).FirstLineLeftMargin = 0
   styles(2).RightMargin = RULER_ONE_CENTIMETER* 17
   
   'Column 3
   Set styles(3) = s.CreateRichTextParagraphStyle
   styles(3).LeftMargin = 0
   styles(3).FirstLineLeftMargin = 0
   styles(3).RightMargin = RULER_ONE_CENTIMETER* 3
   
   'Column 4
   Set styles(4) = s.CreateRichTextParagraphStyle
   styles(4).LeftMargin = 0
   styles(4).FirstLineLeftMargin = 0
   styles(4).RightMargin = RULER_ONE_CENTIMETER* 2.5
   
   Call body.AppendTable(rowCount%, columnCount%,,,styles)
   
   ' - Populate table - the top row
   Set rtnav = body.CreateNavigator
   Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Nr.")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Thema")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Erlediger")
   Call body.EndInsert
   Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Call body.BeginInsert(rtnav)
   Call body.AppendText("Zeit")
   Call body.EndInsert
   Call body.Update
   
   ' - Reopen document in order to load RT item into UI
   doc.SaveOptions = "0" ' make it possible to close the document without a "do you want to save" prompt.
   Call uidoc.Close(True)
   Set uidoc = ws.EditDocument(True, doc, , , , True)
   Call uidoc.Document.RemoveItem("SaveOptions")
   
End Sub

arbeitet.

Nach langer Analyse stellte ich fest, das die Ursache für den Laufzeitfehler (für mich nicht erklärbar) in der Definition der Feldhilfe
Image:Bearbeitung von RichTextItems bringt Laufzeitfehler
zu finden ist. Entfernt man diese, so wird mit

 
Set body = doc.GetFirstItem("Body")

auch das entsprechende Item gefunden.