Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Внизграбли в ADO + JET... Найти похожие ветки
← →
wicked (2002-03-18 10:49) [17]2 MaXim1999
а проиндексованы одинаково?.... проверь и это....
2 All
выяснил я, в чём дело...
оказывается, грабли были хорошо замаскированы - часть пряталась в борландовской реализации датасета - при вставке пустой записи в буффер автоинкрементного поля попадает мусор... вообще-то он не всегда туда попадает, а только если присваивать значения каким-либо полям новой записи в обработчике OnAfterInsert... соответственно, TCustomADODataset пытается запихнуть этот мусор OLE DB провайдеру...
вторая часть граблей - в самом провайдере Jet OLE DB... оказывается, он принимает и ЗАПИСЫВАЕТ все значения полей, переданные ему, в том числе и автоинкрементные... соответственно, получался key violation...
лечится проблема путём отучения TCustomADODataset"а передавать значения автоинкрементного поля провайдеру... например, через использование TBetterADODataset - он не передаёт провайдеру поля, в которых FieldKind не равно fkData...
делайте выводы, господа, что есть суксь, а что есть рулезь... :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c