![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоинкрементные поля - как с ними работать ч-з TSimpleDataSet [D7, MSSQL]
Shaman © (2002-11-26 17:06:00)Как добавить запись в табличку, у которой есть автоинкрементное поле через TSimpleDataSet?
Например есть табличка
ID int IDENTITY (1, 1) NOT NULL,
Name VARCHAR(120)
Пробуем добавить в нее запись через T: TSimpleDataSet
T.DataSet.CommandType := ctQuery;
T.DataSet.CommandText := "SELECT * FROM MyTable";
T.Open;
T.Append;
T.FieldByName("ID").AsInteger := -1;
T.FieldByName("Name").AsString := "Запивайте водку пивом";
T.Post;
T.ApplyUpdates(-1);
возникает ошибка Unable to find record. No key specified
Помогите, третий день парюсь, кучу вариантов перепробовал.
sniknik (2002-11-26 21:42:00) [1]vlad_ri1 (26.11.02 21:35)
так оно и в MSSQL.
vlad_ri1 (2002-11-26 21:35:00) [2]Я не работал с MSSQL, и возможно я не прав, но добавляя записи в таблицы Access через ADO поля с автоинкрементом я не трогаю, его значение увеличивается автоматически.
Shaman (2002-11-26 18:04:00) [3]Суть дела понимаю, но надеюсь, что разработчики предусмотрели для этого какой-нибудь механизм. Есть куча свойств (AutoGenerateValue, ProviderFlag) которые, по идее должны эту проблему решать, но ничего не получается.
Johnmen (2002-11-26 17:50:00) [4]TSimpleDataSet не знаю, не встречал.
А указанная ошибка говорит о том, что невозможно однозначно идентифицировать запись. В виду отсутствия уникального ключа или уникального индекса. А один из них должен быть обязательно (в данном случае), если мы стремимся к грамотному построению БД...