clientdataset, klucz główny i dodawanie rekordów

0

mam problem z Cliantdatasetem.
Mam mam takie połączenie TClientadatset->TDatasetProvider->TSqldataset->TSqlconnection->Baza Firebird, czyli standard

Obrabiana tabela zawiera kilka pól, w tym pole ID które jest jest kluczem głównym i autoincrement.
w uproszczeniu zapytanie ma postać: tslqdataset.commandtext=" select id, pole1,pole2 ..... from tabela" czyli tez standard .
Dla pola ID (czyli klucza głównego) ustawiłem w clinetdataset.fields[0].required:=false i tak samo dla sqldataseta
Potem kolejno dodaję ("clinetdataset.append") do clientdatseta nowe wiersze, pierwszy sie dopisuje bezproblemowo, przy drugim mam wyjątek "key violation", pomimo że pole ID ma property "required" ustawione na false
nie rozumiem czemu clientdataset lub sqldataset , a może provider ?, kontroluje prawidłowść klucza głównego przed wykonaniem "clientdataset.applyupdates ()"

wiem że można odczytać z bazy nową wartość klucza głownego dla tabeli przed dopisaniem nowego rekordu , ale wolał bym tego uniknąć i wykorzysytać mechanizmy clitdataseta i dbxpress

0

Trzy dni szukania i sam coś w końcu znalazłem .
Dla zainteresownych podaję link : http://edn.embarcadero.com/print/20847

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