Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Autoincrement ID [D7, Paradox]


Stratos ©   (2004-03-26 05:40:00) 

Как при работе с БД Paradox получить последний ID, сгенерированный autоincrement полем после вызова Insert()?
Использую TTable.


Fay   (2004-04-05 09:05:00) [1]

А нельзя взять значение а.и. поля на AfterPost-е? Неужели с 9999 раз медленнее будет?


LaidBack   (2004-04-05 09:02:00) [2]

Самый быстрый способ - создать отдетьный TTable для этой таблицы и каждый раз перед тем как добавить запись делать следующее с ним:

TblAutoInc.Active := True;
TblAutoInc.Last;
LastAutoValue := TblAutoInc.FieldByName('ID').AsInteger;
TblAutoInc.Active := False;


Разумеется, по полю ID нужен ключ.


Stratos   (2004-04-04 21:17:00) [3]

Спасибо :)


Fay   (2004-03-26 07:15:00) [4]

Я тут тестанул с AfterPost-ом. Всё пучком.


Fay   (2004-03-26 07:07:00) [5]

"сразу после Insert" - это когда?


Stratos   (2004-03-26 06:56:00) [6]

ага, по барабану...
но к сожалению не мне решать Парадокс/не Парадокс...
ну что ж - "SELECT MAX(ID) FROM mytable". и вперед.
Спасибо всем.

Если все же кто найдет - ответьте.


Fay   (2004-03-26 06:46:00) [7]

Это проблемы программиста/пользователя. Рагадоху и инкременту всё по барабану (включая барабан)


ЮЮ   (2004-03-26 06:43:00) [8]

IMHO, это проблема не Paradox-а, а Increment-а.


Fay   (2004-03-26 06:27:00) [9]

Ничего умнее, чем "слазь уже с рагадоха!" посоветовать не могу.
И не собираюсь 8)


Stratos   (2004-03-26 06:20:00) [10]

Дело в том, что эта задача вставала уже неоднократно.
Раньше я ее решал как "SELECT MAX(ID) FROM mytable".
Но это ИМХО криво...
Странно, что не предусмотрена стандартная функция для такой задачи - встречается ведь часто...

А при попытке считать поле сразу после Insert возвращается 0...
:(


Fay   (2004-03-26 06:07:00) [11]

В общем виде - никак. Во всяком случае свой. Даже если Вас устроит чужой, то "грязное чтение" подос№ёт обязательно.
НО. Если Вы пашете в одиночестве, тогда сходите в конец датасета по возратающему индексу по автоинкременту. Там в конце он и живёт. Если не переехал в начало (по убывающему) 8).


Наверх

Титульная страница Поиск, карта сайта Написать письмо