Autor Thema: Beseitigung - ID des Dokumets, das den Fehler verursacht hat  (Gelesen 3836 mal)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Hallo!
Durch mir nicht erklärbare Umstände kan ich in einer DB den Befehl @Command([ToolsRefreshSelectedDocs]) - der
als Smarticon hinterlegt ist - nicht mehr auf alle Docs ausführen.

Es wird dabei der Fehler "ID des Dokumets, das den Fehler verursacht hat = 5742" ausgegeben.
Wenn ich das Doc nu öffne und erneut speichere läuft "ToolsRefreshSelectedDocs" ohne Probleme darüber.


Ich habe schon versicht einen Agent zu erstellen der mir die Docs öffnet speichert und wieder zumacht.


@Command([EditDocument];"1");
@Command([FileSave];"1");
@Command([EditDocument];"0")

Der läuft aber leider nicht richtig.


Auch habe ich einige Zeilen Code gefunden und angepasst.
Ich lasse in ein neues Feld einfach einen Dummiwert schreiben.

Sub Terminate
    Dim Session As NotesSession
    Dim Db As NotesDatabase
    Dim Doc As NotesDocument
   
   
    Set Session = New NotesSession
    Set Db = Session.CurrentDatabase
    Set Doc = Db.CreateDocument
   
    Call Doc.ReplaceItemValue("fld_bearbeitet","JA")   
    Call Doc.Save(True, False, False)
   
End Sub

Dieser macht leider auch Probleme - es wird nix in die Docs geschrieben.  ??? ??? ??? ???

Was muß ich am Code ändern damit die Docs geöffnet, gespeichert und wieder geschlossen werden?


Danke
mest


Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #1 am: 27.09.10 - 07:58:45 »
Hallo,

Kleine Frage.
Was soll dieser Code denn tun?

Code
Sub Terminate
    Dim Session As NotesSession
    Dim Db As NotesDatabase
    Dim Doc As NotesDocument
    
    
    Set Session = New NotesSession
    Set Db = Session.CurrentDatabase
    Set Doc = Db.CreateDocument
    
    Call Doc.ReplaceItemValue("fld_bearbeitet","JA")    
    Call Doc.Save(True, False, False)
    
End Sub

Der macht doch nichts anderes als die aktuelle Db zu oeffnen, ein NEUES Dokument zu erzeugen,
einen Wert in das Feld "fld_bearbeitet" zu schreiben und dieses Dokument zu speichern.

Steht also in komplettem Gegensatz zu Deiner geschilderten Anforderung, einen Wert in ein
bereits vorhandenes Dokument zu schreiben.


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #2 am: 27.09.10 - 08:13:06 »
Wenn Du solch ein Dokument findest, solltest Du es erstmal nicht öffnen und speichern, sondern in der Felderliste den Unterschied zu den anderen funktionierenden Dokumenten suchen. Vermutlich berechnest Du innerhalb des Dokuments etwas aus einem Feld, bei dem Du von einem bestimmten Typ ausgehst (z.B. einer Zahl). Das Feld enthält aber keine Zahl, vielleicht irgendeinen Text oder auch nichts.

Wenn Du das gefunden hast, solltest Du nach der Ursache für die Abweichung suchen und entweder die Ursache abstellen, oder, falls das Verhalten normal ist und nur bei der Entwicklung nicht bedacht wurde, die Berechnung im Dokument toleranter realisieren.

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #3 am: 27.09.10 - 08:56:42 »
Hallo!

@ALL
Habe meinen Kollegen bei dem das Problem auftritt erneut auf den Zahl gefüht und siehe da - neue Informationen!

Bei der DB handelt es sich um eine MailSchaoble der Verison 8.5.1 DE.
Das Problem wurde zu 99% durch eine fehlerhafe Syncronisation mit seinem Handy bzsw. deren SyncSW ausgelöst.

@Peter Klett
Beim Vergleich mit  Document Viewer konnte ich nur festellen, daß nach dem Speichern einige neue Felder hinzugekommen sind.
z.B.: BlindCopyTo (NAMES), Encrypt (TEXT), EnterBlindCopyTo (NAMES), EnterCopyTo (NAMES), ExpandPersonalGroups (TEXT)
Das dürften Felder der 8.5.1 sein welche in ein "altes Doc" geschrieben werden - oder?

@ascabg
Der Code soll in einen Agenten verpackt werden den ich dann über alle Docs laufen lassen kann.
Die Docs sollen nur geöffnet, neu gespeichert und wieder geschlossen werden.
Da @Command([ToolsRefreshSelectedDocs]) ja leider nicht läuft.

Danke für die Unterstützung
mest

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #4 am: 27.09.10 - 10:52:15 »
Hallo,

Zitat
Der Code soll in einen Agenten verpackt werden den ich dann über alle Docs laufen lassen kann.
Die Docs sollen nur geöffnet, neu gespeichert und wieder geschlossen werden.
Da @Command([ToolsRefreshSelectedDocs]) ja leider nicht läuft.
Das mag schon sein. Aber der von Dir eingestellte Code tut dieses bei leibe nicht.
Mit db.CreateDocument erstelltst Du nummal neue Dokumente in der Datenbank und veraenderst keine vorhandenen.

Und stellt sich auch die Frage, ob der Agent manuell gestartet wird oder ob dieser
als periodischer Agent laufen soll.


Andreas

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #5 am: 27.09.10 - 11:13:24 »
Hallo!

Der Agent soll manuell gestartet werden.

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #6 am: 27.09.10 - 11:30:13 »
Hallo!

Wie siehts damit aus?

Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim dc As NotesDocumentCollection
  Dim doc As NotesDocument
  Set db = session.CurrentDatabase
  Set dc = db.AllDocuments
  Set doc = dc.GetFirstDocument()

  While Not(doc Is Nothing)
    Call Doc.ReplaceItemValue("fld_bearbeitet","JA")   
    Call Doc.Save(True, False, False)
    Set doc = dc.GetNextDocument(doc)
  Wend

End Sub

Wenn ich das richtig verstehe, dann werden hier einfach alle Docs mit einem Feld versehen und dann gespeichert.

oder?
mest

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #7 am: 27.09.10 - 11:44:01 »
Wenn die Ursache für den Fehler ist, dass das Feld "fld_bearbeitet" nicht "JA" enthält, ist das schon der richtige Ansatz.

Allerdings speicherst Du alle Dokumente erneut, unabhängig davon, ob das Feld korrekt gesetzt war oder nicht. Das solltest Du nicht tun.

Daher würde ich anstelle von Set dc = db.AllDocuments

Set dc = db.Search (|fldbearbeitet != "JA"|, Nothing, 0)

verwenden.

Die in rot dargestellte Selektionsformel würde ich dann noch um weitere Eigenschaften (wie Maskennamen usw.) erweitern, da es sicherlich andere Dokumente ohne dieses Feld in der DB geben darf (Kalendereinträge u.a.).

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #8 am: 27.09.10 - 12:17:08 »
Hallo!

@Peter Klett
Ok das habe ich verstanden.

Da komt schon die nächste Frage.
Wie kann ich die selectierten Doc´s vorm speichern neu berechnen lassen?
Ich will nur sichergehen, daß auch alle Felder aktuell sind.

Danke
mest
« Letzte Änderung: 27.09.10 - 12:28:36 von nsm »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #9 am: 27.09.10 - 14:12:37 »
Du kannst ein NotesDocument.ComputeWithForm benutzen, das muss aber nicht alles erledigen. Scripte in PostOpen, Querysave usw. werden z.B. nicht ausgeführt.

Wenn es nur ein paar Dokumente sind, kannst Du die auch mit workspace.EditDocument, uidoc.Save und uidoc.Close abarbeiten, aber wenn das zuviele sind, fliegt Dir dabei gerne der Client um die Ohren.

Du solltest auf jeden Fall an der Ursache arbeiten. Hinterher die Scherben wegräumen ist auf Dauer der falsche Ansatz.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #10 am: 27.09.10 - 14:20:02 »
Wenn ToolsRefreshSelectedDocs scheitert, wird ComputeWithForm ebenso auf die Nase fallen.
Ich kann Peter nur unterstützen: Nicht an den Symptomen doktern, sondern die Ursache beheben.

Zudem: Wenn die Sache im Frontend laufen soll und alle (!) Dokumente erneut gespeichert werden, dann hat das sehr "lustige" Effekte, gerade bei Kalendereinträgen und ToDos.

Bernhard

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #11 am: 28.09.10 - 08:54:27 »
@Peter Klett

Gibt eine Möglichlkeit diese Fehlermeldung genauer zu deuten?
Wie gesagt ich habe die Docs mit Notes Document Viewer 2.0 verglichen und konnte allerdings nichts finden.
Bis eben einige neue Felder, die anscheinend durch die neue MailMaske der 8.5.1 hinzu gekommen sind.

viele Grüße
nsm


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Beseitigung - ID des Dokumets, das den Fehler verursacht hat
« Antwort #12 am: 28.09.10 - 09:13:26 »
Das ist mir nicht bekannt. Du erhältst lediglich die NoteID des Dokuments zurück, bei dem der Fehler auftritt. Das Dokument kannst Du Dir dann genauer ansehen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz