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

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

Автоинкремент [D7, MS Access]


dvp ©   (2004-12-26 19:57:00) 

Подскажите, как при INSERT'е через ADOCommand узнать сгенерированное значение поле счётчика?

Ну кроме SELECT TOP 1 id FROM table ORDER BY id DESC;


sniknik   (2004-12-26 22:37:00) [1]

зачем искать, делай следующим запросом после инсерта, уже показанный с ним.

(если нужна именно функция (как описано), то придется свое написать чтото вроде элементарного парсера запроса на onExecuteComplete, и если INSERT присутствует то дополнительный запрос выполнять с последующим изменением своей переменной insert_id, функцией ее возвращать. только это уже будет не от стандартного конекта а от твоего переопределенного и дописанного)


dvp   (2004-12-26 21:19:00) [2]

sniknik ©   (26.12.04 21:14) [9]
Хм.... @@IDENTITY говорите ...... а где его найти?
Т.е. SELECT @@IDENTITY даст тот самый id для текущего коннекта?


sniknik   (2004-12-26 21:14:00) [3]

> Честно говоря не думаю, что Access оперирует понятием "транзакция"
и тем не менее, оно есть.


- ты суслика видиш?
- нет.
- и я нет, а он тем не менее есть.
© ДМБ


> есть возможность после инсерта вызвать mysql_insert_id($connection)
@@IDENTITY это как раз то самое, только непосредственно от движка, в функцию не завернуто. (исправь "упушение" ;о)))


aus   (2004-12-26 21:00:00) [4]

dvp ©   (26.12.04 20:57) [7]
оперирует, если не Access, то jet - точно...


aus   (2004-12-26 20:57:00) [5]

sniknik ©   (26.12.04 20:51) [5]
и впрямь, отстал я от жизни...


dvp   (2004-12-26 20:57:00) [6]

Честно говоря не думаю, что Access оперирует понятием "транзакция"
Вот в php+MySQL есть возможность после инсерта вызвать mysql_insert_id($connection), которая вернёт значение последнего сгенерированного счётчика для текущего сеанса. Должно же быть что-то аналогичное в ADO


sniknik   (2004-12-26 20:51:00) [7]

aus   (26.12.04 20:43) [4]
ага в курсе. попробуй.


aus   (2004-12-26 20:43:00) [8]

sniknik ©   (26.12.04 20:40) [3]
>Автоинкремент [D7, MS Access]


sniknik   (2004-12-26 20:40:00) [9]

select @@IDENTITY as ID


aus   (2004-12-26 20:19:00) [10]

только в одной транзакции, иначе кто-то другой может вставить запись и будет уже не твой id.


aus   (2004-12-26 20:18:00) [11]

select max(id) from table


Наверх

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