Autor Thema: Neue Dokumente werden nicht in Ansicht angezeigt  (Gelesen 4803 mal)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Neue Dokumente werden nicht in Ansicht angezeigt
« am: 12.07.04 - 14:57:30 »
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)
 




Axel


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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #1 am: 12.07.04 - 15:06:25 »
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
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)

Driri

  • Gast
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #2 am: 12.07.04 - 15:07:51 »
Ist in den Select-Statements der Ansichten denn irgendwas dabei, was evtl. bei den so erzeugten Dokumenten nicht gesetzt wird ?

Glombi

  • Gast
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #3 am: 12.07.04 - 15:19:58 »
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
« Letzte Änderung: 12.07.04 - 15:21:23 von Glombi »

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:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #4 am: 12.07.04 - 16:11:19 »
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"...
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
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
DEBUG eines ComputeWithForm
« Antwort #5 am: 12.07.04 - 16:43:21 »
Wie oben beschrieben ist der ComputeWithForm ein kleines "Zieselchen" wie wir hier bei uns sagen: Er reagiert extrem empfindlich auf falsche Feldwerte / Datentypen und bricht ab, wo ein manuelles "F9" im Dokument einfach die Werte korrigiert.

Leider sagt uns der ComputeWithForm auch bei RaiseError = True nur, dass ein Fehler aufgetreten ist, nicht aber, wo genau dieser Fehler aufgetreten ist.

Um das herauszufinden, muss man sich eines kleinen Tricks bedienen:
Bricht ein ComputeWithForm ab, dann werden alle Felder, die sich UNTERHALB des Fehler- verursachenden Feldes befinden, nicht mehr berechnet.

Man tut also folgendes: Man erstellt in der Maske ein Feld, Typ Text, berechnet, Formel "Bis hier OK" (o.ä.) und stellt dieses ganz nach oben (als Referenz, dass die Formel korrekt ist).

Nach dem Script- Lauf prüft man, ob tatsächlich "Bis hier OK" im Feld steht.

Ist das der Fall, dann verschiebt man das Feld in der Maske schrittweise nach unten. irgendwann wird das Feld plötzlich leer sein nach dem Script- Lauf. Dann weiss man, dass direkt überhalb des Feldes das Feld ist, was den ComputewithForm abbrechen lässt. In dieses Feld baut man jetzt einfach eine entsprechende Fehler- Routine ein, und VOILA: Der ComputeWithForm läuft durch...

Mögliche Fehlerursachen sind:

- Ein Feld, dass als Datum definiert ist, aber nur den TEXT eines Datums enthält (F9 wandelt das automatisch um, ComputeWithForm bricht ab).

Lösung: Einfach in die Formel (bei berechnet) oder in die Eingabeumsetzung( bei Bearbeitet) ne Formel ala:
x := @Date( FeldName );
@If( @IsError( x ) ; "" ; x )

- Das selbe gilt für Zahlenfelder: Steht dort z.B. ein Text drin, der als Zahl interpretiert werden KÖNNTE, dann tut das F9 auch... ComputeWithForm bricht mit Fehler ab. Das passiert z.B. dann, wenn man Felder per Script füllt, und nicht bemerkt, dass man einen Textwert in ein Zahlenfeld schreibt...
Auch hier hilft wieder eine ähnliche Formel:
x := @TextToNumber( FeldName );
@If( @IsNumber( FeldName ) ; FeldName ; @IsError( x ) ; "" ; x )

So kriegt man den ComputeWithForm dazu, alles korrekt durchzuführen.

HTH
Tode
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)

Glombi

  • Gast
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #6 am: 12.07.04 - 16:49:44 »
Notes ist bisweilen case-sensitive, auch bei den Ansichtszugriffsformeln. Bitte prüfe, ob es immer "xDeleteReason" heisst: Feldname in der Maske und Ansicht. Falls die Schreibweise anders ist, musst Du Dein Script anpassen.
Gelegentlich schreibt ein Script auch alles in Großbuchstaben.
Das könntest Du in den Dokumenteigenschaften sehen, wenn Du das Dokument per Ungelesenen suchst.

Andreas
« Letzte Änderung: 12.07.04 - 16:52:37 von Glombi »

Glombi

  • Gast
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #7 am: 12.07.04 - 16:51:22 »
@Tode:
Wenn ich das richtig interpretierem geht Notes bei ComputeWithForm Feld für Feld vor und speichert das Dokument !? Sonst stünde ja nicht in einigen Feldern das richtige und in den anderen nicht.

Andreas
« Letzte Änderung: 12.07.04 - 16:54:42 von Glombi »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #8 am: 12.07.04 - 16:53:39 »
Andreas:
Der Mann nennt sich TodE und nicht Tuu Duu :)

Muss nicht so sein: das Doc wird wohl gespeichert unabhängig davon, ob es erolfgreich berechnet wurde oder nicht, das impliziert nicht ein Speichern nach jedem Feld, wäre sonst ein Performance-Fresser.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #9 am: 12.07.04 - 16:56:13 »
Danke Jens für den Hinweis - Macht der Gewohnheit  ;D

Der Code wäre so aber besser - ComputeWithForm am Ende.

While Not (docMail Is Nothing)
     
      Set docNew = docMail.CopyToDatabase(dbCurrent)
     
      docNew.Form = "frmVorgangMail"
     
      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)

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #10 am: 12.07.04 - 16:57:44 »
@Andreas:
Es geht - genauso wie in der Frontend-Maske - Feld für Feld von oben nach unten vor. Verhält sich aber ab und an "diffiziler", wie Tode schon bezeichnenderweise schrieb.

Bernhard
« Letzte Änderung: 12.07.04 - 16:59:46 von koehlerbv »

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:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #11 am: 12.07.04 - 20:35:52 »
Danke Jens für den Hinweis - Macht der Gewohnheit  ;D

Der Code wäre so aber besser - ComputeWithForm am Ende.

While Not (docMail Is Nothing)
     
      Set docNew = docMail.CopyToDatabase(dbCurrent)
     
      docNew.Form = "frmVorgangMail"
     
      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)

Andreas

Hi,

so hatte ich das auch am Anfang. Machte die gleichen Probleme. Das mit dem Feld xDeleteReason muss ich nochmal genauer untersuchen. Wenn das so wäre wie du sagst, dass Script manchmal alles in Grossbuchstaben schreibt, warum sehe ich denn dann das Dokument nachdem ich es über Ungelesene suchen..., bearbeiten und speichern einmal angefasst habe. Das will mir im Moment nicht in den Kopf.

Ich vermute, dass der Hund darin begraben liegt, dass das Maildokument über CopyToDatabase in die Datenbank übernommen wird und ich dann nur die andere Maske drüberziehe. Ich denke das es hier mit den Backend-Funktionen irgendein Problem gibt.

Ich habe in einer kommerziellen Version diese Funktion gesehen. Hier ist es aber nur möglich immer nur ein Mail zu übernehmen. Außerdem wird es im Frontend geöffnet und man muss es dann speichern. Das werde ich morgen mal testen.


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

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:Neue Dokumente werden nicht in Ansicht angezeigt
« Antwort #12 am: 13.07.04 - 11:50:15 »
Ich habe in einer kommerziellen Version diese Funktion gesehen. Hier ist es aber nur möglich immer nur ein Mail zu übernehmen. Außerdem wird es im Frontend geöffnet und man muss es dann speichern. Das werde ich morgen mal testen.

Ich habe es getestet und es funktioniert. Die Dokumente werden sauber in der Ansicht angezeigt. Es scheint so, dass sie einmal im Frontend geöffnet werden müssen.


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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz