Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Как узнать значение поля(тип счетчик) после Insert |
Автор: chip_and_dayl 17.12.2009, 14:16 | ||
Есть таблица такого вида: cCode cName CCode-счетчик, сName - String; Есть код, после выполнения которого, мне нужно узнать, какое значение было присвоено полю cCode
Вариант ответов типа: поменять тип поля cCode на целое число и самому генерировать ИД(Код), а также делать запрос вида: SELECT cCODE from Table_N where cName=''Edit1.Text'' не устраивают |
Автор: Gudinya 17.12.2009, 14:42 | ||||
Во первых:
во вторых: для получения айдишника
|
Автор: Frees 17.12.2009, 15:19 | ||
|
Автор: Данкинг 17.12.2009, 15:27 |
Т.е. этот "returning" в Access прокатит? (извиняюсь, пробовать сейчас неохота). |
Автор: chip_and_dayl 17.12.2009, 15:29 |
Забыл сказать, что использую СУБД Access, поэтому запрос, что выше не возможен Добавлено @ 15:31 Данкинг ммм, как ты узнал, что Аксес? :) |
Автор: Frees 17.12.2009, 15:44 |
chip_and_dayl, в drkb статья "Как узнать номер автоинкремента при вставке новой записи?" drkb.ru |
Автор: Akella 17.12.2009, 16:04 | ||
База локальная или многопользовательская? Может
|
Автор: chip_and_dayl 17.12.2009, 18:05 | ||
Akella Дво-пользовательская:) Одни словом писал дополнительный SQL-запрос который находит тот ИД
Добавлено через 1 минуту и 10 секунд Я думал может какое-то свойство ADoQuery хранит внесенные значения в БД, но как оказалось нету |
Автор: ТоляМБА 17.12.2009, 18:48 |
chip_and_dayl, в том то и дело что если база многопользовательская (более одного пользователя) на этом запросе можно словить грабли. Причем словить можно через 5 минут а можно и через месяц или год. Когда возникнет ситуация что оба пользователя одновременно добавят запись, не будут же они совещаться каждый раз при добавлении. |
Автор: chip_and_dayl 17.12.2009, 19:07 | ||
ТоляМБА Ммм, так я там не зря добавил условие
Я сомневаюсь, что одновременно два пользователя будут добавлять одно и то же название, да еще при условие что название будет тютенька в тютеньку :) |
Автор: ТоляМБА 17.12.2009, 19:21 | ||
Если база многопользовательская, то логично предположить что ведется логирование. Тогда в условие запроса можно ещё добавить что-то типа AND User_ID=CurrentUser. То есть вывести максимальное ID где cName=''' + Edit2.Text + '''' введённое именно этим пользователем. |
Автор: Akella 18.12.2009, 00:37 |
Название будет разное, а ID получится одинаковый. |
Автор: Romikgy 20.12.2009, 01:41 | ||
http://msdn.microsoft.com/en-us/library/aa140015%28office.10%29.aspx |
Автор: chip_and_dayl 20.12.2009, 11:43 |
Romikgy Я в прошлый раз смотрел в сторону глобальной переменной @@Identity, но так и не дошло как оно работает. Сегодня осенило, спс |
Автор: Romikgy 21.12.2009, 12:35 |
chip_and_dayl, мои те поздравления , что осенило ![]() удачи в освоении дельфи... |
Автор: dvamaster 22.12.2009, 07:16 | ||
а еще добавлю, делай транзакцию (типа сессия на юзверя)
без нее у меня был косяк, когда одновременно добавляли несколько человек |