Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung
Delphi Anwendung bekommt nur altes Dokument
DerVissi:
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
jBubbleBoy:
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?
Tode:
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?
Andrew Harder:
Schreib bitte, das es kein Profildokument ist...
DerVissi:
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');
--- Ende Code ---
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.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln