Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Axel am 22.07.05 - 15:00:48

Titel: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 22.07.05 - 15:00:48
Ich will auch mal wieder ein Problem haben.   ;)

Es sollen Mails aus der Mail-Db des Users in eine Vorgangsverwaltung eingefügt werden.
Ich verwende dazu folgenden Code (Auszug aus einem Agenten):

Code
...
Set collection = workspace.PickListCollection(1, True, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
If collection.Count = 0 Then Exit Sub
	
Set docMail = collection.GetFirstDocument  'Maildokument
	
While Not (docMail Is Nothing)			
  Set docNew = docMail.CopyToDatabase(dbCurrent)
  docNew.Form = "frmVorgangMail"		
  Call docNew.ComputeWithForm(False, False)

  'Hier werden noch verschiedene Felder für die Zuordnung zur einer
  'Adresse usw. gesetzt
 
  Call docNew.Save(True,False)
  Set docMail = collection.GetNextDocument(docMail)
Wend  'While Not (docMail Is Nothing)


Die Dokumente werden auch in der DB angelegt, aber von 5 übernommenen Mail werden unter Umständen nur 2 oder 3 in der Ansicht angezeigt. Ein refreshen der Ansicht bringt nichts. Über die Volltext-Suche finden ich aber auch die anderen Dokumente. Wenn ich diese dann aktualisiere (mit @Command([ToolsRefreshSelectedDocs])), dann sehe ich sie auch in der Ansicht.

Wo liegt denn hier das Problem ?

Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Thomas Schulte am 22.07.05 - 15:03:54
Irgendein berechnetes Feld in der frmVorgangMail?
Versuch es doch mal mit call docnew.ComputeWithForm
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 22.07.05 - 15:06:30
Hi,

ist doch schon drin. Siehe 3.Zeile nach dem While...

Ich habe das sogar schon probiert vor dem Save nochmal ComputeWithForm aufzurufen, aber auch ohne Erfolg.


Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Thomas Schulte am 22.07.05 - 15:28:40
Kannst du da mal ein NoScucess Print Fehlermeldung einbauen:
Success =newdoc.computewithform(False,False)
if not success then
print "CWF für Doc ....."
End if
If denke nämlich immer noch das es der ComputeWith Form ist. Der läuft seit dem Umstieg auf die Version 6 nämlich nicht mehr mit der Unempfindlichkeit die ihn unter V5 noch auszeichnete. Früher hat der zweite Parameter nämlich bewirkt das er trotzdem weitergemacht hat und halt die Computes durchgeführt hat die er durchführen konnte. Egal ob Fehler oder nicht. Jetzt bricht er an dieser Stelle nämlich ab und kommt zurück.
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 22.07.05 - 15:43:06
Hi,

ComputeWithForm läuft ohne Fehlermeldung durch. Trotzdem wird das Dokument nicht in der Ansicht angezeigt.


Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Thomas Schulte am 22.07.05 - 16:11:31
Mach doch mal mit dem Tool von Martin Scott NoteMan.DocDelta einen Snapshot vor und nach dem Manuellen Refresh. Damit müsstest du die Felder rausfinden können die sich geändert haben.
Und ich glaub immer noch das der ComputeWithForm nicht sauber durchläuft. Zumindest war das bei mir bei den letzten Datenbanken bei denen ich das Ding verwendet habe so.
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 22.07.05 - 16:41:27
Hi,

ich hab's mit dem DocDelta mal probiert. Es ändert sich tatsächlich ein Feld und zwar das Feld $MessageID. Allerdings ist es nachher genauso leer wie vorher. Keine Ahnung was sich an diesem Feld ändert?    :P

Ich glaube nicht, dass es an diesem Feld hängt.


Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 22.07.05 - 16:50:59
Hi,

ich hab' noch mal was probiert. Ich öffne das Dokument im Frontend, aktualisiere und speichere es und schließe das Dokument wieder. Und siehe, damit funktioniert es.
Aber für den User ist das ein Zumutung und ist eher was für Blinde. Der Bildschirm flackert ziemlich wild in der Gegend rum.

Dieser Würkdrumrum ist so nicht einsetzbar. Schade eigentlich.

Code
...
Set collection = workspace.PickListCollection(1, True, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
If collection.Count = 0 Then Exit Sub

Set docMail = collection.GetFirstDocument  'Maildokument

While Not (docMail Is Nothing) 
  Set docNew = docMail.CopyToDatabase(dbCurrent)
  docNew.Form = "frmVorgangMail" 
  Call docNew.ComputeWithForm(False, False)

  'Hier werden noch verschiedene Felder für die Zuordnung zur einer
  'Adresse usw. gesetzt

  
  Set uidocCurrent = workspace.EditDocument(True, docNew)  'Dokument im Frontend öffnen
  Call docNew.Remove(True)  'Das Dokument, das im Backend erstellt wurde, löschen

  Call uidocCurrent.Refresh(True)
  Call uidocCurrent.RefreshHideFormulas
		
  Call uidocCurrent.Save
  Call uidocCurrent.Close

  Set docMail = collection.GetNextDocument(docMail)
Wend  'While Not (docMail Is Nothing)
...


Ich werde bis Montag mal die Segel streichen. Vielleicht kommt ja dann der Geistesblitz.


Schönes Wochenende

Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 25.07.05 - 13:56:58
Hi,

ist hab nochmal ein bisschen getestet, ohne aber richtig weitergekommen zu sein. Zwischendurch hat's mal super geklappt, obwohl ich am Code garnichts geändert hatte. Nu geht's wieder nicht.

Das öffnen der importierten Mails im Frontend ist scheinbar auch die beste Alternative, denn bei HTML - Mails gehen anscheinend Informationen verloren. In der Mail, mit der ich das getestet habe, hatte ich drei Body-Felder, im Dokument in der DB nur noch eines.  ???

Ich bin langsam am verzweifeln. Har irgendjemand noch eine Idee?

Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 26.07.05 - 10:36:56
Hi,

wie es aussieht ist das Problem gelöst. Scheinbar haben mir Mails mit einem $Ref-Feld, also Antwortmails in die Suppe gespuckt. Wenn ich diese Feld nach der Übernahme in die eigene DB lösche, dann funktioniert's.

Code
Set collection = workspace.PickListCollection(1, True, dbMail.Server, dbMail.FilePath, "($Inbox)","Eingangsbox", "Markieren Sie die gewünschten Mails.")
If collection.Count = 0 Then Exit Sub

Set docMail = collection.GetFirstDocument  'Maildokument

While Not (docMail Is Nothing) 
  Set docNew = docMail.CopyToDatabase(dbCurrent)
  docNew.Form = "frmVorgangMail" 
  docNew.RemoveItem("$Ref")
  Call docNew.ComputeWithForm(False, False)

  'Hier werden noch verschiedene Felder für die Zuordnung zur einer
  'Adresse usw. gesetzt

  Call docNew.Save(True,False)
  Set docMail = collection.GetNextDocument(docMail)
Wend  'While Not (docMail Is Nothing)
...

Ich habe mal ca. 100 Mails am Stück übernommen und alle wurden anschließend in der Ansicht angezeigt.

Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: koehlerbv am 26.07.05 - 10:42:44
Es die Ansicht dann so eingestellt, dass die Antworten hierarchisch dargestellt werden ? Ansonsten ist ja $Ref egal.

Bernhard
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 26.07.05 - 10:57:18
Yoo, du hast recht. Auf die einfachste Idee bin nicht gekommen. Manchma sieht man den Wald vor lauter Bäumen nicht.  ;D

Ich werde aber beim Import der Mails aber das $Ref-Feld löschen, da ich unter Umständen die Antwort-Hierarchie in den Ansicht noch für was anderes brauche.


Axel
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: koehlerbv am 26.07.05 - 11:07:31
Vor allem kann m.E. das $Ref 'raus, weil Du ja auf die Hierarchie in der Quell-DB keine Rücksicht nimmst, oder ? $Ref würde ja nur Sinn machen, wenn Du (notfalls zwangsweise) zu jedem ResponseDoc auch immer das Parent mit importierst.

Bernhard
Titel: Re: Probleme bei der Übernahme von Mails in eingene DB
Beitrag von: Axel am 26.07.05 - 11:39:22
Richtig. Die Hierarchie der Quell-Db bleibt außen vor. Das wäre dann auch zu aufwändig.


Axel