Autor Thema: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben  (Gelesen 3475 mal)

Offline thomino

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Ein paar Ansätze habe im Forum und in der Designerhilfe gefunden, aber irgendwie kriege ich den Einstieg nicht hin.  ???

Ich habe eine Datenbank, in der bestimmte Mails landen. Angehängt ist immer eine XML-Datei, deren Inhalt per Agent (nach Maileingang) nach (ggf. mehrfach vorkommenden) Textstellen durchsucht werden soll:

Wenn die Stelle <DbtrAcct><Id><IBAN> in der Datei gefunden wird, sollen die nachfolgenden 22 Stellen in ein separates Feld der Maske geschrieben werden. Weitere Treffer sollen mit in das Feld (kommagetrennt) aufgenommen werden.

Der Angang soll möglichst nicht abgelegt werden und im Body-Feld verbleiben.

Kann mir jemand auf die Sprünge helfen?
« Letzte Änderung: 01.12.15 - 13:22:02 von thomino »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #1 am: 27.11.15 - 11:12:19 »
- Attachments lösen in temporäres Verzeichnis: Hier oder hier...
- Dann XML durchforsten mit NotesStream oder open und ReadLine
- doc.ReplaceItemValue() zum zurückschreiben...

Für mehr und konkretere Hilfe wirst Du schreiben müssen, was Du schon gemacht hast, und Code posten... Denn das Forum ist NICHT dafür da, um Dir fertigen Code zu liefern...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline thomino

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #2 am: 27.11.15 - 13:03:13 »
Vielen Dank schonmal

Hier meine Code, wie er bislang aussieht

[Hab den Quatsch gelöscht, siehe nächsten Beitrag]
« Letzte Änderung: 29.11.15 - 19:37:43 von thomino »

Offline thomino

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #3 am: 29.11.15 - 18:35:41 »
N'abend zusammen!

Hab's jetzt grundsätzlich hinbekommen.

Wenn ich als Auslöser 'Wenn Dokumente eingefügt werden' wähle, funktioniert alles prima, als Auslöser 'Nach Eingang neuer Mail' tut sich nichts, obwohl der Agent gem. Protokoll losläuft.

Woran kann das liegen?

Code
Sub Initialize
	
	Dim session As New NotesSession  
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection  
	Dim doc As NotesDocument
	
	Dim rtitem As Variant
	Dim Text As String
	Dim fileNum As Integer
	Dim fundstelle As String
	Dim iban As String
	Dim feldwert As NotesItem
	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	Set doc = collection.GetFirstDocument()

	If doc.HasEmbedded Then    
		Set rtitem = doc.GetFirstItem( "Body" )
		ForAll o In rtitem.EmbeddedObjects
			Sleep 1
			If o.Type = EMBED_ATTACHMENT Then
				
				'Datei temporär ablegen'
				file = getTimeStamp(Now) & o.Source
				Call o.ExtractFile( "\temp\" & file )
							
				fileNum% = FreeFile()

				Open "\temp\" & file For Input As fileNum%
				Do Until EOF(1)
					'Hier erfolgt die weitere Verarbeitung, bis das Ende der Datei erreicht ist.
					Line Input #1, text$
					
					fundstelle$ = InStr(text$, "<DbtrAcct><Id><IBAN>")
					
					While fundstelle$ > 0
						iban$ = iban$ & "," & Mid(text$, (fundstelle$ + 20), 22)
						text$ = Mid(text$, (fundstelle$ + 42))
						fundstelle$ = InStr(text$, "<DbtrAcct><Id><IBAN>")	
					Wend	

				Loop
				Close fileNum%
				
				'temporäre Datei löschen
				Kill ( "\temp\" & file )
			End If
		End ForAll
		'Variable iban das Feld übertragen
		Set feldwert = doc.ReplaceItemValue( "vorg_ktonr", iban$ )
		
		'Speichern
		Call doc.Save( False, True )	
	End If

End Sub

Function getTimeStamp(dt As Variant) As Long
	Dim dtEpoch As New NotesDateTime("1/1/1970 00:00:00")
	Dim dtTemp As New NotesDateTime(Now)
	dtTemp.LSLocalTime = dt
	getTimeStamp = dtTemp.TimeDifference(dtEpoch)
End Function

Viele Grüße

Thomas

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #4 am: 30.11.15 - 07:54:21 »
Ich glaub', Du bekommst das Dokument via session.DocumentContext und nicht über db.UnprocessedDocuments.

-Werner

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #5 am: 30.11.15 - 08:49:37 »
1.) Ich sehe keinen Errorhandler, bau mal einen ein, dann siehst du wahrscheinlich auf der Serverkonsole wo es hakt

2.) Einkommende Mails sind nie vom Typ Richtext, sondern MIME.
Dein Code, (wenn er funktioniert, Stichwort session.convertmime), konvertiert den Mailbody ins Richtextformat, was je nach Anwendungsfall nicht gewünscht ist.

3.) Zum Auslesen von Attachments verwende ich immer @AttachmentNames + getAttachment: http://atnotes.de/index.php/topic,43282.msg349433.html#msg349433
Dann muss man nicht in die MIME/Richtext-Items rein schauen.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline thomino

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Bestimmte Inhaltsteile eines Anhangs in ein Feld schreiben
« Antwort #6 am: 01.12.15 - 11:47:50 »
1.) Ich sehe keinen Errorhandler, bau mal einen ein, dann siehst du wahrscheinlich auf der Serverkonsole wo es hakt

Hätte ich auch drauf kommen können, es lag an den Sicherheitseinstellungen des Agenten...

2.) Einkommende Mails sind nie vom Typ Richtext, sondern MIME.
Dein Code, (wenn er funktioniert, Stichwort session.convertmime), konvertiert den Mailbody ins Richtextformat, was je nach Anwendungsfall nicht gewünscht ist.

Mit den Mails klappt eigentlich ganz gut (Es sind weitergeleitete Notes-Mails)


3.) Zum Auslesen von Attachments verwende ich immer @AttachmentNames + getAttachment: http://atnotes.de/index.php/topic,43282.msg349433.html#msg349433
Dann muss man nicht in die MIME/Richtext-Items rein schauen.

Hab ich geändert: Funktioniert



Danke für die Tipps! - Erledigt

Gruß
Thomas
« Letzte Änderung: 01.12.15 - 11:49:41 von thomino »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz