Edytowanie danych w pliku .xml poprzez clientdataset.

Edytowanie danych w pliku .xml poprzez clientdataset.
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
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:

Kopiuj
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:

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

flowCRANE
Zmień tytuł wątku na sensownie opisujący problem, albo wątek zostanie umieszczony w Koszu;
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 12 godzin
  • Postów:1598
0

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.