![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Multiple records found, but only one was expected. Как бороть? [D7, ACCESS]
Bams © (2003-09-02 16:53:00)
Пользуется BDE, Access, D7
Есть таблица в базе MS Access:
#==============================================================
# Table: tblMain
#==============================================================
CreateTble C=tblMain N="tblMain"
(
C=IDMain T=AUTOINCREMENT P=Yes M=Yes N="IDMain",
C=IDClass T=INTEGER P=No M=No N="IDClass",
C=IDProducer T=INTEGER P=No M=No N="IDProducer",
C=strElement T=STRING P=No M=No N="strElement",
);
Настроен TTable (AutoRefresh:=True)
Следующий код при повторяющихся значениях IDClass,IDProducer,strElement выдает эксепшн Multiple records found, but only one was expected. Но IDMain то проинкрементировался!!!
Выходит что ключ на самом то деле не по IDMain???
tblMain.Append();
tblMain["IDClass"]:=FIDClass;
tblMain["IDProducer"]:=FIDProducer;
tblMain["strElement"]:=FstrElement;
tblMain.Post();
Объясните в чем грабли пожалуйста, и как это лечить. Спасибо.
Bams (2003-09-03 12:07:00) [1]
Уникальность не нарушена. Да и через инсерт делал, та же ерунда происходит. Наверно действительно с BDE слезать надо.
sniknik (2003-09-02 17:47:00) [2]
проверь базу может у тебя уже уникальность сбита, тогда так будет при любом добавлении.
и переходи на ADO. или по крайней мере на запросы (попробуй то же самое инсертом).
Bams (2003-09-02 17:27:00) [3]
2 sniknik
Оно и так False. А вот поменял на True - получил:
Field "IDMain" must have a value
Выходит перед постом "IDMain" еще не имеет никакого значения? А уникальный ключ в этот момент строится по всем остальным полям или как???? Хотя я ведь явно указал на "IDMain" как PrimaryKey.
Бррр..
sniknik (2003-09-02 17:15:00) [4]
есть такое свойство Required у поля IDMain надо в false поставить, типа tblMain["IDMain"].Required := ...