Autor Thema: Export von Feldern in ein .txt File  (Gelesen 3111 mal)

Offline Hammer

  • Junior Mitglied
  • **
  • Beiträge: 72
Export von Feldern in ein .txt File
« am: 10.11.05 - 15:44:15 »
Hi,

ich exportiere mit einem Agenten einige Textfelderin ein Txt File. Mit folgender Funktion kann ich dies problemlos bewerkstettigen +oh_document.Verrechnungscode(0) und Zahlen mit +Cstr(oh_doku...).

Jetzt habe ich ein Problem und zwar möchte ich ein Richttext Feld exportieren und er soll mir nur den Text rausfiltern (exportieren). Wie kann ich dies denn realisieren? Geht das überhaupt?


Hammer

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #1 am: 10.11.05 - 15:52:06 »
Schau Dir mal die Methode GetFormattedText der NotesRichTextItem class an. Das ist genau die Methode, die Du brauchst.

Bernhard

Offline Hammer

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Export von Feldern in ein .txt File
« Antwort #2 am: 10.11.05 - 16:15:27 »
@Hi Bernhard, danke für Deine sehr schnelle Antwort

Hab diese mir gerade reingezogen, verstehe aber nicht so recht was von mir verlangt wird :-(
Muss ich zuerst die NotesRichtextItem class einbinden und anschließend kann ich mit dem entsprechenden Code die Felder exportieren, oder wie verstehe ich das?

Kann mir hier noch jemand genauere Infos dazu liefern, wäre nett.

Danke

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #3 am: 10.11.05 - 16:20:24 »
Hast Du Dir mal das Beispiel zur Methode angeschaut ? Zufällig wird der Einsatz der Methode dort sogar am Beispiel eines Textfile-Exports beschrieben.

Bernhard

Offline Hammer

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Export von Feldern in ein .txt File
« Antwort #4 am: 10.11.05 - 16:29:51 »
Hi Bernhard,

ja habe ich aber leider verstehe ich da nur Banhof :-(
Vielleicht muss ich mich nur länger einlesen.

Versuche es am WE mal

Danke

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Export von Feldern in ein .txt File
« Antwort #5 am: 10.11.05 - 16:42:39 »
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
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Hammer

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Export von Feldern in ein .txt File
« Antwort #6 am: 10.11.05 - 17:10:57 »
@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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #7 am: 10.11.05 - 17:13:22 »
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #8 am: 10.11.05 - 17:17:04 »
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #9 am: 10.11.05 - 17:30:16 »
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

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Export von Feldern in ein .txt File
« Antwort #10 am: 10.11.05 - 17:43:52 »
Wegen des String-Concatenators hat gerade heute Axel J. sehr gute Beispiele aufgemalt, warum es "&" wie offiziell gefordert statt "+" heissen muss:
100 + "200" = 300

Die guten Beispiele hab ich btw. aus der Notes Hilfe.  ;D
Gerade auch für die Anfänger ist es eine gute Idee, da manchmal ein bischen rumzuklicken und zu lesen.
Es ist ca. 2 mal lebendiger geschrieben als die Java Language Specification und 2.570 mal lebendiger als die EJB2.0 Specification.  :-[

Gruß Axel 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Export von Feldern in ein .txt File
« Antwort #11 am: 10.11.05 - 19:12:45 »
Ich würde hier dringend noch eine Ergänzung empfehlen (kein Object ohne Prüfung):

Hast ja recht. Ich habe aber gerade das Bsp. aus der Hilfe kopiert, angepasst und mit ein paar Kommentaren versehen.   ::)


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.

Das habe ich eigentlich so aus der Hilfe übernommen. Normalerweise nehme ich hier immer NotesRichTextItem und habe noch keine Probleme gehabt. Natürlich immer mit der Objekt-Prüfung. Desöfteren habe ich aber auch schon den Typ Variant gesehen.

Kannst du mir mal kurz erklären wo hier die Unterschiede liegen und welchen Typ man am besten nehmen soll. Für mich ist es interessant mal Meinungen von anderen zu hören. Man lernt ja nie aus.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #12 am: 10.11.05 - 19:19:09 »
Axel, das sollte keine Kritik sein, wirklich nicht. ich habe nur noch ergänzt, und zu diesem Thema könnte man noch sehr, sehr viel schreiben. Aber der "Hammer" kann sich ja auch erstmal selber Gedanken machen.

Zu Deiner Frage meine Meinung (und nicht die enzyklopädische Antwort): Wenn Du ein Item, welches nicht vom Typ RTI ist, einem Objekt vom Typ RichTextItem zuweist, dann scheppert es. Variant kommt damit klar, aber den Variant (oder DAS Variant ? Oops, da habe ich eine offene Frage) juckt das nicht.

Zusammen mit den Prüfungen ist man damit auf jeden Fall auf der sicheren Seite. Und das zählt. Meiner Meinung nach ist die nackte, von Notes / Domino generierte Fehlermeldung "Object variable not set" mit das peinlichste, was es gibt.

Aber das sind nur meine 2 ct. Andere Meinungen höre ich auch sehr gerne - es geht ja um den Zuwachs an Erfahrungen für uns alle. Und "nobody's perfect".

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Export von Feldern in ein .txt File
« Antwort #13 am: 10.11.05 - 20:06:51 »
Hi Bernhard,

ich hab's auch nicht als Kritik aufgefasst. Eigentlich ist eine saubere Fehlerbehandlung eine Selbstverständlichkeit, so dass man nicht immer darauf hinweisen müsste. Aber leider wird sie oft genug außer Acht gelassen.

Vielen Dank für deine, wenn auch nicht enzyklopädische  ;D , Antwort. Also machts eigentlich Sinn immer den Typ Variant zu verwenden. Obwohl ich mich erinnern kann, das es mal Probleme gab, als ich Variant benutzt habe. Nach dem ich den Typ auf NotesRichTextItem geändert hatte ging's. Ich weiß leider nicht was das war.

Da ich mich in meinen Anwendungen immer definitiv auf ein RTF-Feld bezogen habe, hat's bei mir auch nie Probleme gegeben.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export von Feldern in ein .txt File
« Antwort #14 am: 10.11.05 - 23:53:07 »
Also machts eigentlich Sinn immer den Typ Variant zu verwenden.

Hallo Axel,

Variant aber nur in diesem Kontext - ansonsten kann das sträflich sein. Hier macht aber Variant wirklich Sinn - der  DataType existiert ja nicht umsonst.

Was folgendes angeht:
Da ich mich in meinen Anwendungen immer definitiv auf ein RTF-Feld bezogen habe, hat's bei mir auch nie Probleme gegeben.

Da kann man ja nur sicher sein, wenn man das RTI gerade erst selber angelegt hat (vorher muss man natürlich prüfen, obn man überhaupt etwas anlegen kann). Sonst kann man ja damit konfrontiert werden, dass sich - aus den verschiedensten Ursachen - ein Item einfach vom Acker macht: Dokument auf anderem (unsauberen / unerwartetem) Wege erzeugt, Dokument im Eimer etc. pp.

Mein prägendes Ereignis war wohl , als wir vor etlichen Jahren zu unserem Lieblingsplätzchen am Sallingsund in den wohlverdienten Sommerurlaub fahren wollten. Am Vorabend musste unbedingt noch eine eigentlich für den folgenden Monat geplante Applikation in Betrieb genommen werden (trotz meines Protests). Murphies Law verlangte, dass das schief geht: Eines von ca. 100.000 Dokumenten sah nicht so aus wie erwartet (ein Item war nicht existent - in genau einem Dokument. Warum auch immer - ich weiss es nicht mehr). Es war eine kurze Nacht nach der Lösung des Problems, und am nächsten Tag dann 1.300 Kilometer zu fahren. Meine Frau hat sich dann zu recht beklagt, dass sie viel mehr als die vereinbarten Strecken am Steuer sitzen musste. Die zusätzlich eingebauten Prüfungen haben uns dann aber einen absolut ruhigen Urlaub beschert.

Ich mag etwas übersehen, aber mein Rekord liegt (bei einem wirklich kritischem Agent) wohl derzeit bei knapp 500 Programmzeilen an Prüfungen, bis die eigentlichen Aktionen dann starten (die ebenso peinlich überwacht werden). Der innere Vorbeimarsch für mich war: Dieser Agent löste eine Lösung eines anderen Unternehmens ab, deren Programm bei weniger Aktionen auf eine sechsstellige Anzahl von Dokumenten immer mindestens vier Stunden benötigte. Mein Programm war damit aber beim Erstlauf in knapp fünf Minuten fertig, und jeder weitere Lauf benötigt nur noch Sekunden. Die (extrem wichtigen) Prüfungen (error handling würde ich das noch nicht mal nennen, sondern "possible errros management") fallen da gar nicht ins Gewicht.

So, von der Antwort an Axel habe ich mich jetzt meilenweit entfernt (sorry) - es war "nur" ein Plädoyer für möglichst sicheren Code.

Bernhard

Offline Hammer

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Export von Feldern in ein .txt File
« Antwort #15 am: 14.11.05 - 12:03:09 »
Hi,

jjjjuuuuuhhhhuuu, es hat funktioniert. Leider exportiert der Agent immer den selben Inhalt von dem RichText Feld, d.h. alle meine anderen Felder, die ich bis jetzt exportiere werden geändert nur der Inhalt des RichText Feldes ist bei jeder exportieren Zeile der selbe :-(

Was kann ich denn gegen dieses Problem tun?

P.S. NACHTRAG: Es wird immer der Inhalt vom aktuellen Dokument ausgelesen.

Danke
« Letzte Änderung: 14.11.05 - 12:28:24 von Hammer »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz