Domino 9 und frühere Versionen > Entwicklung

Export von Feldern in ein .txt File

<< < (2/4) > >>

Axel:
Wo verstehst du denn Bahnhof? Eigentlich sagt doch das Beispiel genau was du machen musst.

Du hast doch anscheinend schon ein Stück Code das mit normalen Feldern funktioniert. Dort musst du es nur noch integrieren.

...
Dim rtitem As Variant
Dim plainText As String
...

'Initialisierung der NotesRichTextItem-Klasse
'Den Namen des Feldes, hier Body, musst du anpassen
Set rtitem = oh_document.GetFirstItem( "Body" )

'Auslesen in eine Textvariable
If ( rtitem.Type = RICHTEXT ) Then
  plainText = rtitem.GetFormattedText( False, 0 ) 
End If

'Schreiben in eine Textdatei
'#filenum müsstest du bereits haben, da du ja schon in eine Datei schreibst
'das musst du entsprechend anpassen
Print #fileNum, plainText 



Axel
 

Hammer:
@Axel: Vielen Dank für Deine ausführliche und einfache Beschreibung.

Klappt leider trotzdem noch nicht. Liegt wahrscheinlich an der rot markierten Stelle (ist ein RichText Feld) :-(

Sub Initialize
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim voi_Auslieferungsdoc As NotesDocument
   Dim oh_document As NotesDocument
   Dim temp As NotesDocument
   Dim vrzfilename As Variant
   Dim Server As New notesdbdirectory ("")
   Dim tempdate As Variant     
   Dim AuslieferungDatum As Variant     
   Dim rtitem As Variant
   Dim plainText As String
   
   vrzfilename = "c:\vitt_komplett.txt"
   Open vrzfilename For Output As #1
   
   Set rtitem = oh_document.GetFirstItem( "Body" )
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set view = db.GetView("AHList")
   Set oh_document = view.GetFirstDocument   
   
   If ( rtitem.Type = RICHTEXT ) Then
      plainText = rtitem.GetFormattedText( False, 0 ) 
   End If
   
   
   Print #1, "Fakturahinweis;Test"
   
   Do While Not (oh_document Is Nothing)
      Set temp = view.GetNextDocument(oh_document)         
      Print #1, oh_document.Test1(0); +";" +oh_document.rtftest(0)
      Set oh_document = temp
   Loop
   Close #1
End Sub

koehlerbv:
Ich würde hier dringend noch eine Ergänzung empfehlen (kein Object ohne Prüfung):

'Initialisierung der NotesRichTextItem-Klasse
'Den Namen des Feldes, hier Body, musst du anpassen
Set rtitem = oh_document.GetFirstItem( "Body" )

If not (rtitem Is Nothing) Then

   'Auslesen in eine Textvariable
   If ( rtitem.Type = RICHTEXT ) Then
      plainText = rtitem.GetFormattedText( False, 0 ) 
   End If
End If

An den "Hammer" noch folgender Hinweis (neben dem Rat, sich gute Literatur zu beschaffen, die erst ein strukturiertes Lernen ermöglichen): Die Standard-Notes-Klassenbibliothek brauchst Du nicht explizit einzubinden, diese wird automatisch eingebunden und steht Dir daher ad hoc zur Verfügung.
Noch eine Erläuterung: Axel hat rtitem als Variant deklariert und nicht als NotesRichTextItem, da wir ja nicht wissen können (NIEMALS), ob das Item "Body" wirklich vorhanden ist bzw. vom Type RICHTEXT ist.

HTH,
Bernhard

koehlerbv:
Nun, Du reisst mit dem Hintern wieder ein, was Du mit den Händen aufgebaut hast:
Dein RT item ist nicht wie (fast) alle anderen Notes-Items ein Array. Du hast mit
plainText = rtitem.GetFormattedText( False, 0 ) 
den plain text in eine Stringvariable geholt und musst diese dann auch verwenden:

 Print #1, oh_document.Test1(0) & ";"  & plainText

Bitte beachte auch, dass in LS der String-Concatenator "&" ist und nicht das Pluszeichen. Mit "+" kannst Du böse Überraschungen erleben.

Bernhard

koehlerbv:
Wegen des String-Concatenators hat gerade heute Axel J. sehr gute Beispiele aufgemalt, warum es "&" wie offiziell gefordert statt "+" heissen muss:
100 + "200" = 300

Wenn Du die Forumssuche bemühst, dann findest Du auch eine längere Diskussion zu diesem Thema mit weiteren Negativ-Beispielen.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln