AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
21.02.20 - 04:13:35
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News: Jetzt mit HCL Notes / Domino 11 und einem Extraboard für Nomad!
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  OLE/COM-Programmierung
| | |-+  Delphi Anwendung bekommt nur altes Dokument
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Delphi Anwendung bekommt nur altes Dokument  (Gelesen 7683 mal)
DerVissi
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« 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
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1151



« Antworten #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?
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.9
--
Nur ein toter Bug, ist ein guter Bug!
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6326


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #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?
Gespeichert

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...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Andrew Harder
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 289



« Antworten #3 am: 07.04.16 - 21:15:43 »

Schreib bitte, das es kein Profildokument ist...
Gespeichert

Andy
DerVissi
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #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 » Gespeichert
Driri
Gast
« Antworten #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 ?
Gespeichert
DerVissi
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #6 am: 08.04.16 - 09:01:39 »

Genau, die gleiche Datenbank. Die wird nicht repliziert
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1151



« Antworten #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.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.9
--
Nur ein toter Bug, ist ein guter Bug!
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6326


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #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.
Gespeichert

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...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
DerVissi
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #9 am: 08.04.16 - 14:16:30 »

Nein es wird definitiv nicht repliziert. Das ist das Einzige bei dem ich mir sicher bin  Grin

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.....  Ahnungslos

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.
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: