Autor Thema: ComputeWithForm  (Gelesen 4532 mal)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
ComputeWithForm
« am: 02.05.07 - 12:39:50 »
Hallo zusammen,

ich habe ein merkwürdiges(?) Problem:

Ich hatte vor, meine über nun lange Zeit gewachsenen Daten einer DB durch einen Agent refreshen bzw. neu validieren zu lassen. Da mir im Backend wohl der ComputeWithForm als einzige Möglichkeit bleibt, habe ich einmal einen Scriptagenten geschrieben, der mit besagter Methode alle Dokumente durchläuft. Per ErrorHandler schreibe ich dann die aufgetretenen Fehler in die Dokumente (nur erstmal zu Testzwecken).

Jetzt habe ich allerdings zum einen das Problem, dass er ausschließlich einen "4000 User-defined Error" in die betroffenen Dokumente schreibt. Wenn ich den ErrorHandler temporär deaktiviere, bekomme ich einen "Notes error: Eine Ansicht mit diesem Namen wurde in der angegebenen Datenbank nicht gefunden". Mich wundert dass diese eigentlich öfter auftretende Fehlermeldung keinen eigenen Fehlercode hat aber nungut. Ist auch eigentlich nicht weiter tragisch, denn es geht mir ja hauptsächlich darum, dass überhaupt ein Fehler existent ist. Das Problem kommt eigentlich erst, wenn ich versuche die markierten Dokumente zu bereinigen. Augenscheinlich ist nämlich gar kein Fehler da. Ich kann ein betroffenes Dok öffnen, refreshen, speichern, schließen... alles kein Problem. Wo kommt denn da der Fehler her?

Hat einer nen Tip für mich bitte?

Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ComputeWithForm
« Antwort #1 am: 02.05.07 - 22:10:37 »
Das hört sich in der Tat etwas merkwürdig an.

Kommt der Fehler bei allen Dokumenten? Hast du in deiner Datenbank eine Vorgabeansicht definiert? Wie sieht denn dein Code zum Refreshen 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: ComputeWithForm
« Antwort #2 am: 02.05.07 - 23:32:34 »
ComputeWithForm ist zahlreichen Einschränkungen unterworfen und eigentlich eher ein Backend-Instrument (auch wenn etwas anderes impliziert wird). Suche mal hier im Forum nach dieser Methode ...

Ich verwende derzeit ComputeWithForm überhaupt nicht mehr. Um die Schwierigkeiten zu verdeutlichen: Lege mal in einer Mail-DB eines neues Dokument an und lasse es mit ComputeWithForm fertig berechnen. Ein Code, der das fehlerfrei aushält, würde mich auch sehr interessieren.

Bernhard

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #3 am: 03.05.07 - 09:14:27 »
@Axel: Schön dass Du das auch so siehst. ;)
Nein, der Fehler tritt auch nicht bei allen Dokumenten auf. In der Datenbank sind knapp 2000 Dokumente und nur ~400 sind betroffen.
Ja, eine Vorgabeansicht ist definiert.
Gut also der Code ist eigentlich denkbar unspektakulär, aber ich stell ihn mal gerade rein.

Code
Function UpdateAll() As Boolean

	On Error Goto ErrorHandler

	Dim i As Long
	Dim doc As NotesDocument
	Dim acol As NotesDocumentCollection

	Set acol = cdb.AllDocuments
	If acol.Count = 0 Then Exit Function

	For i = 1 To acol.Count
		
		Set doc = acol.GetNthDocument( i )
		Call doc.ComputeWithForm( True, True )
		Call doc.Save( True, False, True )

	Next

	UpdateAll = True

	Exit Function

ErrorHandler:
	
	doc.updateprob = Cstr( Err ) + " " + Error( Err )
	Resume Next

End Function

@Bernhard: Was heißt das ist eher ein Backend-Instrument? Ich suche doch genau ein solches... ich habe den Verdacht, als hätten wir uns misverstanden. ;)


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ComputeWithForm
« Antwort #4 am: 03.05.07 - 09:21:42 »
Backend-Instrument schon - aber es versucht Sachen aus dem Frontend zu erledigen. Wenn Du zum Beispiel ein Feld "computed for display" hast und auf Basis dieses Wertes in einem anderen Feld etwas berechnen musst, dann fällt das System "ComputeWithForm" schon auf die Schnauze.

Bernhard

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #5 am: 03.05.07 - 09:51:10 »
Aber würde dann nicht auch der normale refresh, bzw speichern und schließen auf die Schnauze fallen? Weiß gar nicht mehr genau wie das war... ich benutze eigentlich immer berechneten Text, wenn ich etwas nur zur Anzeige brauche.

Ich habe zwar die Maske schonmal auf Ungereimtheiten untersucht, aber nichts gefunden. Das mache ich aber gleich zur Sicherheit noch einmal. Vielleicht habe ich etwas übersehen...

Beim schreiben fällt mir aber gerade mal so auf... bei einem solchen Fehler in der Maske würden doch ALLE Dokumente diesen Fehler bringen und nicht nur ca. 400 oder?!


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #6 am: 03.05.07 - 10:59:11 »
... der Fehlermeldung nach versucht er auf eine Ansicht zuzgreifen, die es nicht mehr gibt. Hast du in den Masken Lookups, oder DBColumns verbaut, die eventuell so etwas verursachen könnten.

Übrigens würde ich nicht GetNthDocument verwenden. Je mehr Dokumente du durchläufst, um so langsamer wird der Ablauf - verwende lieber While <=> Wend

Toni
Grüßle Toni :)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #7 am: 03.05.07 - 11:05:42 »
Ich bin im ersten Durchlauf alle Felder im Hinblick auf solche Lookups durchgegangen und habe keine gefunden. Mit dem zweiten bin ich noch nicht ganz durch, denn leider ist die Maske nicht sonderlich klein.  >:(

Könnte das unter Umständen auch von gemeinsamen Aktionen herrühren? Ich meine es klingt nich sonderlich logisch... aber ich habe schon so einige Mysterien in Bezug auf besagte gemeinsame Aktionen mitmachen müssen... ;) Naja ich guck sie mir im Anschluss einfach auch mal an.

Da gebe ich Dir Recht - danke für den Tip! Ist wohl die Macht der Gewohnheit gewesen, da ich normalerweise nicht ganz so viele Dokumente in meinen Collections durchlaufe.


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #8 am: 03.05.07 - 11:34:16 »
... Gemeinsame Aktionen sind bei mir schon lange draussen - genau aus diesen Erfahrungen, und die Umbauten kosten dann eine Menge Zeit und Nerven...

Toni
Grüßle Toni :)

Offline thomson666

  • Senior Mitglied
  • ****
  • Beiträge: 285
  • Geschlecht: Männlich
  • niemand hats leicht, aber leicht hats oan...
Re: ComputeWithForm
« Antwort #9 am: 08.05.07 - 07:53:50 »
von gemeinsamen Aktionen ist prinzipiell abzuraten, auch wenn Sie ibm seitig in der mailschablone verwendet werden.
die seiteneffekte sind pervers! zum Beispiel die Änderung der gemeinsamen Aktion greift nur bei der Hälfte der Ansichten/Masken...

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #10 am: 08.05.07 - 09:35:41 »
... da er nur bei bestimmten Dokumenten reagiert, könnte der Hinweis von Bernhard durchaus möglich sein. Zwischen einem Refresh im Frontend und dem Ablauf bei ComputeWithForm werden keine Display-Felder berücksichtigt.

Zum debuggen könnte es auch helfen, die Dokumente zu separieren und die Felder der Maske einzeln im Design der Maske hinzuzufügen - Ist zwar mühsam, aber damit müsste sich dann das Quellfeld ermitteln lassen...

Toni
Grüßle Toni :)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #11 am: 08.05.07 - 12:46:21 »
Hallo zusammen,

also irgendwie komme ich da gar nicht mehr klar mit meinem Projekt. :o

Ich bin mittlerweile mal alle kritischen Elemente in der Maske durchgegangen. Es gibt eigentlich nichts, was Probleme besagter Art verursachen könnte.

Vielleicht verfolge ich ja einen komplett falschen Ansatz.

Ich möchte wie gesagt "einfach nur" alle Dokumente in meiner Datenbank einmal refreshen und dem User eine Möglichkeit geben, mögliche Verknüpfungs-, Validierungs-Probleme o.Ä. zu lösen. Zum einen habe ich versucht, mit einem Agent im Backend und dem ComputeWithForm zurecht zu kommen. Das funktionierte allem Anschein nach zuerst recht gut. Dann hat sich allerdings herausgestellt, dass ich die von ihm gemeldeten Probleme nicht nachvollziehen konnte.

Im nächsten Step bin ich einmal hingegangen und hole mir jetzt jedes Dokument ersteinmal ins UI, refreshe, speichere und schließe es um wenigstens dabei auch das QuerySave ausgeführt zu wissen. Das hat allerdings auch mehr Probleme verursacht als es gelöst hat. Ich konnte nicht alle Fehler mit dem ErrorHandler abfangen und hatte nachher zig Tabs offen in meinem Client. Da habe ich diese Idee auch wieder verworfen. ;)

Ich habe mir überlegt, ob ich die Sache einfach in 2 Steps realisiere. Zum einen könnte ich einen Agenten mit einem ToolsRefreshAllDocs laufen lassen und die Verknüpfungen erst im Anschluss daran prüfen. Allerdings bin ich mir da jetzt wiederum unschlüssig, weil in der Hilfe zu besagtem @Command steht, dass er mit dem Script-Befehl call view.Refresh äquivalent wäre. Das wiederum wäre aber ja auch nicht das was ich brauche... argh!

Bin für jeden Denkanstoss dankbar!


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #12 am: 08.05.07 - 15:37:21 »
... sind die Neuberechnungen - Refresh's denn sehr umfangreich? Sonnst mach es über's Backend...

Toni
Grüßle Toni :)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #13 am: 08.05.07 - 16:17:35 »
Naja die Frage dich sich mir momentan stellt ist wie? ???

Die Felder um die es mir geht, sind eigentlich hauptsächlich einige per Formel in der Maske berechnete Felder und einige hinzugekommene Felder, da es sich wie gesagt eine gewachsene Applikation ist.

Die weiterführenden Sachen wie die Verknüpfung zu anderen Dokumenten in der gleichen und in anderen Datenbanken kann ich per Script verifizieren... das wird kein Problem sein.


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #14 am: 09.05.07 - 15:53:28 »
... wo ist dein Problem? Die Umsetzung der Formeln in LS?

Toni
Grüßle Toni :)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: ComputeWithForm
« Antwort #15 am: 09.05.07 - 16:00:51 »
Achso jetzt weiß ich glaub ich was Du meinst...

Die Formeln aller Felder in Script "evaluaten" und somit die Feldinhalte über die Schiene neu schreiben/aktualisieren? Puh - das bedeutet wirklich Arbeit! Eine andere Chance habe ich keine mehr?


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: ComputeWithForm
« Antwort #16 am: 09.05.07 - 17:37:56 »
... zumindest die Formeln, die du brauchst...

Toni
Grüßle Toni :)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: ComputeWithForm
« Antwort #17 am: 15.05.07 - 14:33:11 »
also ich hatte den gleichen Fehler, und bei mir gab es ein Feld das auf der Grundlage einer Formel eine Ansicht holen wollte die es nicht gab. Du musst dieses Formel finden. Ein nachprogrammieren würde dich nur zu dieser Stelle führen.
Du kannst das auch so schreiben:

doc.computewithform(false, false)

dann wirft er keinen Fehler, aber er macht auch nichts.
der bubble
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline thomson666

  • Senior Mitglied
  • ****
  • Beiträge: 285
  • Geschlecht: Männlich
  • niemand hats leicht, aber leicht hats oan...
Re: ComputeWithForm
« Antwort #18 am: 16.05.07 - 11:58:01 »
ich würde die formeln in LS schreiben und Formula komplett aus der MAske schmeißen. beim öffnen der MAske befüllst du die Felder mit den Werten die du brauchst und beim schließen der Maske rechnest sie um.

der Vorteil ist das du auch in Zukunft einfach nur den Debugger einschaltest und weißt wo es hackt..

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz