Autor Thema: Delphi Anwendung bekommt nur altes Dokument  (Gelesen 11854 mal)

Offline DerVissi

  • Frischling
  • *
  • Beiträge: 37
  • Geschlecht: Männlich
Delphi Anwendung bekommt nur altes Dokument
« am: 07.04.16 - 16:48:42 »
Hallo zusammen,

folgendes Szenario:

Wir lesen ein Dokument mit einer Delphi Anwendung aus und schreiben da anschließend was rein, speichern, fertig.
Das geht soweit ohne Probleme, wenn wir nur mit der Delphi Anwendung arbeiten.

Aber wenn wir im Gegenzug im Notes in das gleiche Dokument reinschreiben und dies speichern und schließen,
das dann wieder auslesen lassen von der Delphi Anwendung, bekommen wir nur die alten Daten zurück....

Natürlich haben wir alle Variablen Unassigned und das Dokument neu aus der DB geholt mit GetDocumentByUNID

Gibt es da irgendwas zu beachten? Falls ich mich unverständlich ausgedrückt habe entschuldige ich mich.

Gruß
Andreas

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #1 am: 07.04.16 - 17:14:24 »
Und wenn du aus der Delphi-Anwendung zurückspeicherst, dann steht wieder der alte Wert in Notes?
Dann hält deine Delphi-Anwendung die Daten vor, oder es werden unterschiedliche Felder angesprochen, schon mal die Dokumente untersucht, so vorher / nachher Vergleich auf Feldebene?
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #2 am: 07.04.16 - 17:36:10 »
Bitte Beispielcode... Ohne den ist das alles Rätselraten.
Im Speziellen ist Euer "Workflow" aus der Schilderung nicht wirklich nachvollziehbar:

Wie wird gearbeitet? Delphi- Änderung, Notes- Client- Änderung und dann wieder Delphi?
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)

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #3 am: 07.04.16 - 21:15:43 »
Schreib bitte, das es kein Profildokument ist...
Andy

Offline DerVissi

  • Frischling
  • *
  • Beiträge: 37
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #4 am: 08.04.16 - 08:31:01 »
Nein kein Profildokument. Es handelt sich um ein Personendokument aus einem Persönlichen Adressbuch das auf dem Server liegt.
Hab vom Kollegen eben den Beispiel Code bekommen

Code
//DB is the Database where we save these Documents
        Doc := Unassigned;
        Doc := DB.getDocumentByUnid('unsere unid');

        x:= 0;
        Item := Unassigned;
        Item := Doc.GetFirstItem('Categories');

        vCategories := Item.Values;

        while ((length(vCategories) > x) and (VarToStr(Doc.GetItemValue('LastName')[0]) = 'Mustermann')) do begin
          if(vCategories[x] = 'Newsletter') then
            vNewsletter := 'Newsletter'
          x := x+1;
        end;

        if((AnsiContainsStr(vNewsletter, 'Newsletter')) and (qryAnpa.FieldByName('KATEGORIE').AsString <> 'Newsletter')) then begin
          Doc.Categories := '';
          x := 0;
          while (length(vCategories) > x) do begin
            if(vCategories[x] <> 'Newsletter') then
            Item.AppendToTextList(vCategories[x]);
            Inc(x);
          end;
        end
        else if ((not AnsiContainsStr(vNewsletter, 'Newsletter')) and (qryAnpa.FieldByName('KATEGORIE').AsString = 'Newsletter')) then begin
          Item := Doc.GetFirstItem('Categories');
          Item.AppendToTextList('Newsletter');
        end;

        if(not Doc.Save(False, False)) then // Dokument speichern
          raise Exception.Create('Fehler beim Speichern');

Wir wollen einen einfachen Abgleich bauen, sind aber noch am Anfang:

momentan möchten wird das Feld Categories erweitern mit der Kategorie "Newsletter" bzw. wollen wir diese Kategorie auch entfernen können. Das funktioniert auch wunderbar, nur wenn ich jetzt beispielsweise dieses Dokument danach mit Notes bearbeite, sprich die Kategorieen wieder veränder und das Dok speichere und mein Kollege startet das Programm wieder, bekommt er nur die werte des ersten Durchlaufs.

Edit:
Das Dokument im Notes hat wenn ich es im Notes prüfe die aktuellen werte die ich ihm gegeben habe.
« Letzte Änderung: 08.04.16 - 08:37:04 von DerVissi »

Driri

  • Gast
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #5 am: 08.04.16 - 08:59:53 »
Die Änderung in Notes geschieht aber in der selben Replik der Datenbank, wie der Zugriff des Programms ?

Offline DerVissi

  • Frischling
  • *
  • Beiträge: 37
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #6 am: 08.04.16 - 09:01:39 »
Genau, die gleiche Datenbank. Die wird nicht repliziert

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #7 am: 08.04.16 - 13:19:54 »
Ich denke schon das die DB repliziert, warum sollte man sonst ein persönliches Adressbuch auf den Server legen?

Das Verhalten habt ihr auch wenn die Delphi-Anwendung einmal geschlossen / geöffnet wird?
Lasst euch einmal das letzte Änderungsdatum ausgeben, hier müsste ja das vom Notes-Client erscheinen.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #8 am: 08.04.16 - 13:53:49 »
Dieses Verhalten habe ich in einer reinen LotusScript- Anwendung kürzlich auch gehabt: So lange das Datenbank- Objekt nicht recycelt wurde habe ich per "GetDocumentByUnid" immer eine gecachte Version des Dokumentes bekommen.

Ich musste entweder das DB Objekt recyceln (LotusScript: Delete db) oder das Dokument tatsächlich recyceln und nicht nur "unassignen" (Delete doc vs. Set doc = Nothing).
Wie ein "Delete" in Delphi aussehen würde, kan ich leider mangels Delphi- Kenntnissen nicht sagen.
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)

Offline DerVissi

  • Frischling
  • *
  • Beiträge: 37
  • Geschlecht: Männlich
Re: Delphi Anwendung bekommt nur altes Dokument
« Antwort #9 am: 08.04.16 - 14:16:30 »
Nein es wird definitiv nicht repliziert. Das ist das Einzige bei dem ich mir sicher bin  ;D

Nun nachdem wir hin und her probiert haben, PC neustarts, neues Dokument erstellt, usw. funktioniert es wieder.
Das Problem ist, das wir nicht wissen was das Problem war.....  :-:

Ich glaube das das was Tode beschreibt, unserem Problem am nächsten kommt.

Ich danke euch jedenfalls für die Tipps, falls der Fehler nochmals auftauchen sollte meld ich mich wieder.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz