Edytowanie danych w pliku .xml poprzez clientdataset.

0

Koledzy

Niby prosta rzecz, a nie mogę sobie z nią poradzić.
Mam plik .xml z zapisanymi w nim danymi.

Dane dodaję do niego za pomocą komponentu clientdataset.

Dodaje je tak:

clientdataset1.active:=true;
clientdataset1.Append;

clientdataset1.fields[1].asstring:=cos_tam;

clientdataset1.post;
clientdataset1.active:=false;

Wszystko ładnie się dodaje, jak chcę usunąć to wybieram numer rekordu i usuwam poprzez clientdataset1.delete i wszystko się pięknie usuwa.

Problem pojawia się jak chcę edytować jakiś rekord.
Robię to tak:

clientdataset1.filename:=nazwapliku_xml;
clientdataset1.Open;
clientdataset1.recno:=1;

clientdataset1.Edit;
clientdataset1.fields[1].asstring:=clientdataset1.fields[1].asstring+'*';
clientdataset1.post;

clientdataset1.Close;

Edycja się dokonuje, ale zedytowany rekord z pozycji 1 jest automatycznie przenoszony na ostatnią pozycję. Jakim cudem tak się dzieje?

Jak po clientdataset1.post dodam clientdataset1.refresh to pojawia mi się komunikat: "must apply updates before refreshing data", ale edycja też się dokonuje, z tym że tak jak w pierwszym przypadku rekord zostaje przeniesiony na koniec tabeli. Czy da się jakoś zapobiec przenoszeniu rekordu na koniec po edycji?
A KONKRETNEJ odpowiedzi (czyli dopasowanej do mojego przypadku) na komunikat "must apply..." w internecie nie mogę znaleźć za czorta jasnego. Any help?
Delphi 2007.

0

Zapobiec pewnie nie ale możesz wrócić do tego rekordu poprzez użycie funkcji locate.

var
  id: integer;
begin
  id := clientdataset.fieldbyname('identyfikator').asInteger;
  ...  //twoje operacje
  clientdataset.locate('identyfikator',id,[]);
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1