Показать сообщение отдельно
  #2  
Старый 06.04.2007, 18:37
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от Holy
Ситуация:
Я выбираю данные из таблицы, с двумя полями ID (ключевое Integer) и Name (Char(15)), используя компонент TClientDataSet.

Код:
cdsSelect: TClientDataSet;
...
with cdsSelect do
begin
  if Active then
    cdsSelect.Close;
  CommandText := 'Select ID, Name from TestTable';
  Open;
end;

Данные помещаю в локальный набор данных на форме:

Код:
cdsLocal.Data := cdsSelect.Data;

В определенный момент я вставляю новую запись:

Код:
with cdsLocal do
begin
  Insert;
  FieldByName('ID').AsInteger := 1;
  Post;
end;

На Post возникает ошибка EDBClient 'Key violation'.

Хочу обратить внимание, что я работаю именно с локальным набором, не имеющим связи с БД (портфель).
Я пытался менять совойства:
Код:
FieldDefs[0].Attributes := [];
FieldDefs[0].Required;
Fields[0].Required := False;
Fields[0].ProviderFlags := [];
Ошибка осталась.

Кто знает, в чем может быть проблема?
А у тебя айди 1 нет в этом датасэте??? Ты даже в локальном ДС не добавиш запись с существующим ID. При условии конечно что это поле PK
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием