Domino 9 und frühere Versionen > Entwicklung

Neue Dokumente werden nicht in Ansicht angezeigt

(1/3) > >>

Axel:
Hi,

ich will auch mal ein Problem haben. Vielleicht hab ich ja auch nur ein Bit vorm Kopf.

Ich will Mails in eine Vorgangs-Datenbank "importieren". Dazu hole ich mir mit PicklistCollection die gewünschten Dokumente aus der Eingangsbox bzw. aus Gesendet. Mit Backend-Funktionen wird das Maildokument in die Datenbank kopiert und dann die Maske umgebogen. Anschließend fülle ich die restlichen Felder und speichere das Dokument. Soweit so gut. Nur kann es passieren, und es passiert ziemlich häufig, dass diese generierten Dokumente in keiner Ansicht der DB vorhanden sind.

Erst wenn ich sie über "Ungelesene Dokumente suchen", gefunden habe, sie einmal geöffnet und gespeichert habe, sehe ich sie in der Ansicht.

An was liegt das? Wie krieg ich die im Backend angelegten Doks dazu in der Ansicht zu erscheinen?

Codeauszug:

--- Zitat ---   Set collection = workspace.PickListCollection(1, True, dbMail.Server, dbMail.FilePath, "($Sent)","Ansicht Gesendet", "Markieren Sie die gewünschten Mails.")
   If collection.Count = 0 Then Exit Sub
   
   If Messagebox("Sollen eventuell vorhandene Dateianhänge mit übernommen werden?", 36, "Vorgänge") = 6 Then
      intAttachment = 1  'Anhänge werden übernommen
   Else
      intAttachment = 0   'Anhäge werden nicht übernommen
   End If  'If Messagebox("Sollen eventuell vorhandene Dateianhänge...
   
   
   Set docMail = collection.GetFirstDocument  'Maildokument
   
   While Not (docMail Is Nothing)
      
      Set docNew = docMail.CopyToDatabase(dbCurrent)
      
      docNew.Form = "frmVorgangMail"
      Call docNew.ComputeWithForm(True, False)
      
      docNew.xDeleteReason = "gültig"
      docNew.VorgangsTyp = "E-Mail"
                                ...

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


--- Ende Zitat ---



Axel


Tode:
Schau Dir doch mal die Selektions- Formel(n) Deiner Ansicht(en) an: Worauf wird dort zugegriffen ?

Jetzt überprüf mal in Deinem generierten Dokumenten, ob nach dem Computewithform die in den Ansichten abgefragten Felder tatsächlich vorhanden sind.

Ich vermute folgendes: Relativ weit oben in Deiner Maske ist ein Feld, was bei "Computewithform" mit einem Fehler reagiert... dadurch wird das Compute abgebrochen und die restlichen Felder werden NICHT gesetzt.

Die Validierung "von Hand" ist meist wesentlich stabiler als ein ComputewithForm und übergeht den Fehler vermutlich, deshalb sind die Dokumente nach dem manuellen Speichern dann auch in der Ansicht.

MERKE: Wenn man ComputeWithForm verwenden will, muss man immer sicher sein, dass alle kritischen Felder vorher gefüllt sind, sonst läuft der ins Nirvana.

Solltest Du das falsche Feld nicht finden, dann melde Dich noch mal, dann beschreib ich Dir kurz, wie man ein ComputeWithForm "Debuggt"...

HTH
Tode

Driri:
Ist in den Select-Statements der Ansichten denn irgendwas dabei, was evtl. bei den so erzeugten Dokumenten nicht gesetzt wird ?

Glombi:
Das ComputeWithForm ist ja herauskommentiert, das wird evtl. die Ursache sein.

Ich verwende immer computeWihtForm(false,false).

Weiterhin empfiehlt es sich, die aktuelle Ansicht nach dem Einfügen zu aktualisieren. Das geht so:

dim ws as NotesUIWorkspace
set ws = New NotesUIWorkspace

call ws.ViewRefresh   'am Ende des Code

Andreas

Axel:
Hi,

vielen Dank für die schnellen Reaktionen.

@Glombi
Ich habe weiter oben testhalber noch ein ComputeWithForm drin gehabt, deswegen hatte ich das mal auskommentiert. Auch der View - Refresh am ende bringt nicht den gewünschten Erfolg. Die Dokumente bleiben unsichtbar.

@Diri
An den Select-Statements liegt es nicht. Hab ich x-mal geprüft. Ausserdem manchmal werden die Doks ja angezeigt.

@Tode
In den Selektionsformeln wird auf den Maskennamen und das Feld xDeleteReason geprüft und beides wird im Code ordnungsgemäß gesetzt. Daran kann es nicht liegen.
In der Maske gibt es keine kritischen Felder.


--- Zitat ---Solltest Du das falsche Feld nicht finden, dann melde Dich noch mal, dann beschreib ich Dir kurz, wie man ein ComputeWithForm "Debuggt"...

--- Ende Zitat ---
Würde mich aber auf jeden Fall interessieren, wer weiss wie man so was mal brauchen kann.

Im Moment stehe ich vor einem Rätsel.  :-\


Axel
 

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln