Autor Thema: Seltsames Verhalten beim Löschen von Antwortdokumenten  (Gelesen 5248 mal)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Hallo Forum,

ich brauch mal wieder Eure Hilfe.

Ich habe eine DB, in der ich mit Haupt- und Antwortdokumenten arbeite. Die Antwortdokumente übergeben Infos an die Hauptdokumte, was bei meinem Problem sicherlich nicht relevant ist, aber zum Verständnis vom Code unten hilfreich ist. Die Infos müssen nämlich beim Löschen auch wieder entfernt werden.

Nun mein Problem:

Ich habe den angehängten Löschcode in einem Agenten, der über eine Ansichtsaktion aufgerufen wird. Wenn ich nun irgendein Antwortdokument markiere und damit löschen will, geht das beim ersten Versuch nicht. Bei allen folgenden Versuchen klappts dann aber. D.h., auch alle anderen Antwortdokumente kann ich problemlos löschen, nur der erste Versuch zu löschen wird verweigert.

Wenn ichs im Debugger verfolge, dann springt er beim ersten Durchlauf bei der Roten Zeile zum Endif. Aber warum?

Irgendwie steh ich mal wieder aufm Schlauch.

Wäre für einen kleinen Anstoß dankbar.

Thomas



Zitat
Sub Initialize
   Dim session As New NotesSession
   Dim db As Notesdatabase
   Dim collMarked As NotesDocumentCollection
   Dim docToChange As NotesDocument
   Dim docTemp As NotesDocument
   Dim nuiw As New NotesUIWorkspace
   
'Hol die aktuelle Datenbank
   Set db=session.CurrentDatabase
'Hol die markierten Dokumente
   Set collMarked = db.UnprocessedDocuments
'Hol das erste der Markierten Dokumente
   Set docToChange = collMarked.GetFirstDocument
   
'Schleife um die markierten Dokumente der Reihe nach zu löschen   
   While Not (docToChange Is Nothing)
      
      ' Das nächste zu löschende Dokument wird schonmal rausgesucht      
      Set docTemp = collMarked.GetNextDocument (docToChange)
      
      'Löschen nur bei Antwortdokumenten (Mitarbeiter) durchführen
      If doctochange.IsResponse Then
         
'Hier wird das Hauptdokument gesucht und dort die SummederPunkte reduziert und WerteinesPunktes neu gerechnet
         Dim Hauptdok As NotesDocument
         Dim Ref As String
         Ref = docToChange.ParentDocumentUNID
         Set Hauptdok = db.getdocumentbyUNID(Ref)
         Hauptdok.SummederPunkte=Hauptdok.SummederPunkte(0) - docToChange.LOBPunkte(0)
         
         If Hauptdok.SummederPunkte(0)=0 Then
            Hauptdok.WerteinesPunktes=0
         Else
            Hauptdok.WerteinesPunktes=Hauptdok.Verteilsumme(0)/Hauptdok.SummederPunkte(0)
         End If
         
         Call Hauptdok.Save(True,False)
         
'Der geänderte WerteeinesPunktes vom Hauptdokument wird an die Antwortdokumente übergeben
         Dim dc As NotesDocumentCollection
         Set dc = Hauptdok.Responses
         Call dc.StampAll( "WerteinesPunktes" , Hauptdok.WerteinesPunktes(0) )
         
         
'Das aktuell markierte Dokument wird gelöscht      
         Call docToChange.Remove( True)
         
      End If
      
      
'Das schon rausgesuchte,  nächste Dokument wird zum aktuellen Dokument      
      Set docToChange = docTemp
   Wend
   
'Ansicht aktualisieren
   Call nuiw.ViewRebuild
   
End Sub
« Letzte Änderung: 05.11.07 - 17:41:36 von iukhdh »
Thomas von der IuK

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: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #1 am: 02.11.07 - 10:01:40 »
Auf welches Dokument zeigt denn die Variable doctochange wenn er aussteigt?


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

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #2 am: 02.11.07 - 11:01:56 »
Er zeigt auf garkein Dokument, erst beim zweiten Mal zeigt er auf das ausgewählte Dokument.
Thomas von der IuK

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #3 am: 02.11.07 - 11:50:38 »
Also jetzt hab ich noch ein paarmal rumprobiert, ich muss meine Aussage von oben etwas verbessern:

Das ganze funktioniert, wenn ich mehrere Antwortdokumente habe. Es klappt nicht, wenn ich nur ein einziges Antwortdokument habe. Da scheint das collmarked schon garnicht gefüllt zu werden.

 ???

Thomas von der IuK

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #4 am: 02.11.07 - 11:59:15 »
Doch, das ist dann auch gefüllt (.Count = 1). Dein GetNextDocument läuft dann aber ins Leere.

Bernhard
« Letzte Änderung: 02.11.07 - 12:08:53 von koehlerbv »

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #5 am: 02.11.07 - 12:05:49 »
Hallo Bernhard,

aber ich fülle das DoctoChange, also letztlich das, welches ich löschen will, doch mit Getfirstdocument. Da müsste er doch das erste, bzw. einzige Dokument bekommen, oder?

Und, warum funktioniert dann das Script, wenn ich zum zweitenmal auf den Button drücke?

 ??? ???
Thomas von der IuK

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #6 am: 02.11.07 - 12:56:33 »
Also ich bin wieder ein wenig weiter:

Wenn ich das einzelne Dokument nach dem Anlegen nochmals öffne und speichere, und dann den Löschbutton betätige, dann funktionierts auch. Diese Arbeit übernimmt ab dem zweiten Antwortdokument immer das Hauptdokument, da es dann in alle Antwortdokumente geänderte Daten reinspeichert. Daher scheint es wohl ab dem zweiten Dokument zu funktionieren.

Die Frage stellt sich mir nun, was ändert das zweite Speichern am Dokument?

Jetzt geh ich erst mal heim, ich schau heute mittag nochmals hier rein.

ciao

Thomas von der IuK

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: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #7 am: 02.11.07 - 14:46:28 »
Er zeigt auf garkein Dokument, erst beim zweiten Mal zeigt er auf das ausgewählte Dokument.

Das kann eigentlich nicht sein, denn dann müsste hier


...
'Schleife um die markierten Dokumente der Reihe nach zu löschen   
   While Not (docToChange Is Nothing)
...


schon Schluss sein.

Verfolge im Debugger mal wie sich der Inhalt der Variable docToChange ändert.

Nur mal so 'ne Frage ins Blaue: Wie ist denn der Agent eingestellt. Für welche Dokumente soll er denn gelten.

Was passiert denn, wenn du den Code direkt in die Ansichtenaktion einfügst?

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

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #8 am: 02.11.07 - 14:54:44 »
Hallo Axel,

also der Agent ist eingestellt dass er über alle ausgewählten Dokumente läuft. Da scheint mir nix im argen zu sein.

Die von dir bemängelte Aussage nehm ich zurück  ;) da hast du recht. Ich habe mir mal mit einem Kollegen angeschaut der sich ein bischen besser im Debugger auskennt. Was uns komisch vorkam, was wir aber aus Zeitmangel erst nächsten Montag genauer überprüfen können, ist die Tatsache, dass er trotz nur einem Antwortdokument bei collmarked auch mal 2 anzeigt, und wir vermuten dass da auch das (nicht angemarkte) Hauptdokument mit aufgenommen wird.

Es hat sich gegen Schluß, bevor wir gehen mussten, verdichtet, dass das was mit dem Speichern des Antwortdokumentes zu tun hat. Dokument markieren und löschen geht nicht, Dokument markieren, öffnen, speichern, und dann löschen funktioniert. Aber warum, da hab ich noch keinen Schimmer.

ciao
Thomas
Thomas von der IuK

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: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #9 am: 02.11.07 - 19:04:37 »
... ist die Tatsache, dass er trotz nur einem Antwortdokument bei collmarked auch mal 2 anzeigt, und wir vermuten dass da auch das (nicht angemarkte) Hauptdokument mit aufgenommen wird.

Kann eigentlich nicht sein. Bei UnprocessedDocuments gibt's nur die markierten Dokumente zurück.

Mal nur so'n Schuß ins Blaue: ändere Mal im Agent das Ziel von "Alle ausgewählten..." auf "Keines". Ich hab' da so einen leisen Verdacht.

Es hat sich gegen Schluß, bevor wir gehen mussten, verdichtet, dass das was mit dem Speichern des Antwortdokumentes zu tun hat. Dokument markieren und löschen geht nicht, Dokument markieren, öffnen, speichern, und dann löschen funktioniert. Aber warum, da hab ich noch keinen Schimmer.

Was das Speichern damit zu tun haben soll erschließt sich mir noch nicht so ganz. Könnte aber vielleicht auch mit dem leisen Verdacht (siehe oben) zu tun haben.

Versuch' auch mal den Code testhalber direkt in die Ansichtenaktion einzufügen. Mal sehen was dann passiert.

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

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #10 am: 02.11.07 - 20:13:15 »
Werd ich am Montag gleich ausprobieren, ich halte dich/euch auf dem Laufenden.

schönes Wochenende
Thomas
Thomas von der IuK

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #11 am: 05.11.07 - 09:20:53 »
Schjönen Wochenanfang zusammen.

Also, das mit dem Agenten auf "keines" setzen hat nix gebracht. Wobei mich natürlich schon interessieren würde, was dein Verdacht war.

Agent in der Ansichtsaktion hat auch nix gebracht. Gleiches Problem.

Es ist einfach so, dass beim ersten Durchlauf des Agenten, bei nur einem Antwortdokument, doctochange bei

Zitat
'Hol die markierten Dokumente
   Set collMarked = db.UnprocessedDocuments
'Hol das erste der Markierten Dokumente
   Set docToChange = collMarked.GetFirstDocument


nicht gefüllt wird.
Gleich danach nochmals ausgeführt klappts.

Ihr seht mich ratlos.  :-:

Und dass am  Montagmorgen, wie wird da nur die Woche ...?  ;)
Thomas von der IuK

botschi

  • Gast
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #12 am: 05.11.07 - 09:28:02 »
Nicht den Agenten in eine Ansichtsaktion tun, sondern den Code in eine Ansichtsaktion.

Matthias

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #13 am: 05.11.07 - 09:54:03 »
Sorry, war falsch geschrieben von mir. Natürlich hab ich den Code AUS dem Agenten eingefügt.
Thomas von der IuK

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #14 am: 05.11.07 - 10:52:52 »
Hallo,

prüf doch einfach nach, ob in der Collection ein Dokument enthalten ist (Count).
Scheint ja nicht der Fall zu sein. Wenn der Count also 0 ist, dann:

Code
If collMarked.Count = 0 Then
    doctochange = session.getDocumentContext
Else
    doctochange = collMarked.GetFirstDocument
End If

und dann

Code
If doctochange Is Nothing then
    Exit Sub
End If
Probiers mal aus.

mfg

Kjeld
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #15 am: 05.11.07 - 12:03:12 »
Sorry, war grad weg, daher erst jetzt meine Rückantwort:

Collection Count ist nie 0, sondern entweder 1 oder 2.

1, wenn ich das Dokument nur anklicke, aber vorne kein Häkchen dran ist
2, wenn ich das Dokument mit Häkchen anklicke.

Mit Häkchen scheints zu funktionieren, ohne Häkchen nicht, bzw dann erst beim zweiten Versuch.

Aber ist das anwählen bei einem einzelnen Dokument ohne Häkchen nicht das gleich wie mit? Ist da wohl der Hund begraben?
Thomas von der IuK

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #16 am: 05.11.07 - 13:22:20 »
Hast Du trotzdem mal mit DocumentContext geprüft?
Ich hab auch schon, wie von Axel oben von beschrieben erlebt, dass Du nicht angehakte Dokumente nicht in UnprocessedDocuments hast, sondern nur über DocumentContext bekommst.
Wenn die Collection aber ein Dokument enthält, sollte auch eins ausgelesen werden können.

Probier doch mal, wenn die Collection nichts hergibt, dann auf DocumentContext zu gehen:

Code
Set doctochange = collMarked.GetFirstDocument
If doctochange is Nothing Then
    Set doctochange = session.getDocumentContext
End If

If doctochange Is Nothing then
    Exit Sub
End If

mfg

Kjeld
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #17 am: 05.11.07 - 14:59:50 »
Sorry,
ich hab mich weiter oben glaub ich wieder falsch ausgedrückt, bin wohl noch nicht so ganz der Debugger-Held.

doctochange ist nicht nothing, das ist mir erst jetzt bewusst geworden, als ich den Ablauf mit deinem Code im Debugger verfolgt habe.

Nothing ist doctochange wohl nur, wenn wirklich nix drinsteht. Bei mir steht aber False und lauter Nullen drin. Beim zweiten Durchlauf steht das gewünschte Dokument drin.

Ich hab daher mal deinen Code wie folgt geändert

Zitat
If Isnull(doctoChange) = False Then
      Set docToChange = session.DocumentContext
   End If
   
   If doctochange Is Nothing Then
      Exit Sub
   End If

womit ich nun tatsächlich das entsprechende Dokument bekomme.

Ich bekomme dann aber im folgenden bei

Zitat
Das nächste zu löschende Dokument wird schonmal rausgesucht      
Set docTemp = collMarked.GetNextDocument (docToChange)
      
eine Fehlermeldung, weil das Dokument docToChange nicht in der collMarked drin ist.

Ich denk mal, dass bekomme ich hin, weil das Problem ja sowieso nur dann auftritt wenn nur ein Dokument in der Collection ist.

Aber was mich mehr bedrückt ist die Fehlermeldung

Cannot remove Notes Document when it ist the Document Context

bei

Zitat
Das aktuell markierte Dokument wird gelöscht      
         Call docToChange.Remove( True)


Da wäre ich für eine Idee dankbar.

Thomas
Thomas von der IuK

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: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #18 am: 05.11.07 - 16:15:15 »
Ich komme erst jetzt dazu hier wieder mitzulesen. Nach dem meine Vorschläge mit von Erfolg gekrönt waren, bin ich mit meinem Latein nun auch am Ende. Ich habe im Moment leider keine Idee mehr, wo hier der Hase im Pfeffer liegt.

Kannst du mal die DB mit ein paar Testdokumenten reinstellen. Vielleicht findet man ja dann was, wenn man selbst mit dem Teil probiert.

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

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Seltsames Verhalten beim Löschen von Antwortdokumenten
« Antwort #19 am: 05.11.07 - 16:45:09 »
Hallo Axel,

normalerweise hät ich kein Problem damit eine DB hier reinzustellen, aber in dem Fall lieber nicht. Es geht um Mitarbeiterbewertungen und Leistungsorientierte Bezahlung, ein Thema das hier grad seeeehr mit der heissen Nadel gestrickt wird. Daher ist das ein brisantes Thema und ich möchte lieber nicht dass die DB solange sie nicht 100 fertig ist meinen Raum hier verlässt. Bitte um Verständnis.

Aber ich überlege mir grad einen anderen Ansatz. Letztlich muss ich hier langsam zum Ende kommen, weil sooo schlimm ist die Sache auch nicht, da der Fehler ja nur bei dem Fall mit einem einzigen Antwortdokument auftritt, wenn dieses nicht angehakt ist. (Es gibt noch genug andere Probleme die wichtiger sind)

Daher meine Frage:
Kann man irgendwie abfragen, ob denn in einer Ansicht überhaupt ein Dokument angehakt ist?

Wenn nein, kann ich ja eine Meldung bringen "Bitte mindestens ein Dokument anhaken" und dann abbrechen.

Ein anderer Ansatz ist noch die Sache mit dem zweifachen Speichern, vielleicht muss ich da nochmal nachforschen woran das liegt, dass es beim zweiten speichern klappt
Thomas von der IuK

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz