Domino 9 und frühere Versionen > Entwicklung
Export von Feldern in ein .txt File
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