![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получить Insert Id после запроса INSERT... [D7, MSAccess via Ado]
123456711 © (2008-07-18 13:40:00)... у базы Standart Jet DB (Access) через Ado.
Другими словами вставляю строку в таблицу у которой поле [id] - счетчик. Как получить значение этого счетчика после вставки?
Интересует все, кроме метода Select max([id]) FROM [SomeTable].
Johnmen (2008-07-22 17:36:00) [41]
> Dmitry S © (22.07.08 15:02) [17]
В соответствии с нормами русского языка. Ничего более.
Для тех, кто писатель, не читатель.
Dmitry S (2008-07-22 15:02:00) [42]
> Сказалиже, что про mssql речь не идет.
Сори за офтоп.
Вот мне интересно, откуда берется множественное число в подобных фразах. Для преувеличения значимости сказанного? Или это попытка манипуляции с помощью общества?
stas (2008-07-21 12:07:00) [43]Anatoly Podgoretsky © (21.07.08 11:06) [15]
Да знаю я.
Ну, раз уж затронули mssql....
Anatoly Podgoretsky (2008-07-21 11:06:00) [44]stas © (21.07.08 10:38) [14]
Чукча не читатель!
Сказали же, что про mssql речь не идет.
stas (2008-07-21 10:38:00) [45]ANB (18.07.08 16:42) [11]
в mssql если есть триггер на таблице на insert в другую таблицу, то и в одной команде непоможет, нужно функцию использовать.
sniknik (2008-07-18 16:54:00) [46]> В мс скл не поможет.
а не про mssql разговор.
> Этого может быть недостаточно
достаточно с гарантией...
MsGuns (2008-07-18 16:47:00) [47]>sniknik © (18.07.08 16:30) [10]
>вовсе не обязательно мудрить с TADOCommand и _RecordSet -ом.
Не вижу ничего мудреного. В конце концнв можно написать универсальную функцию и подключить ее к делфе.
>что действительно нужно так это общий конект (TADOConnection) у обоих (TADOCommand, >TADODataSet) и синхронное выполнение запросов (что по умолчанию), ну и считывать сразу >после вставки само собой.
Этого может быть недостаточно
ANB (2008-07-18 16:42:00) [48]
> sniknik © (18.07.08 16:30) [10]
В мс скл не поможет. Там только в одной команде должно идти.
В аксесс - не знаю.
sniknik (2008-07-18 16:30:00) [49]> Указанный селест должен следовать непосредственно после запроса на вставку в одном и том же TADOCommand, и считывать его через _RecordSet,
> полученный от него:
вовсе не обязательно мудрить с TADOCommand и _RecordSet -ом.
что действительно нужно так это общий конект (TADOConnection) у обоих (TADOCommand, TADODataSet) и синхронное выполнение запросов (что по умолчанию), ну и считывать сразу после вставки само собой.
stas (2008-07-18 16:16:00) [50]Anatoly Podgoretsky © (18.07.08 15:54) [7]
stas © (18.07.08 14:24) [6]
MsGuns (2008-07-18 16:15:00) [51]Указанный селест должен следовать непосредственно после запроса на вставку в одном и том же TADOCommand, и считывать его через _RecordSet, полученный от него:
var
cm: TADOCommand;
ds: TADOQuery;
..
cm := TADOCommand.Create(nil);
cm.Connecton := ..
cm.CommandText := 'Insert ... '+' Select @@indentity';
ds := TADOQuery.Create(nil);
ds.recordset := cm.execute;
NewID := ds.recordset.Fields[0].AsInteger;
ds.Free;
cm.Free;
Try .. finally/except сами поставите ;)
Anatoly Podgoretsky (2008-07-18 15:54:00) [52]stas © (18.07.08 14:02) [3]
Ты укоряешь или хвастуешься незнанием?
stas (2008-07-18 14:24:00) [53]Palladin © (18.07.08 13:56) [2]
Работает! незнал.
sniknik © (18.07.08 14:09) [4]
ага :)
123456711 (2008-07-18 14:16:00) [54]
> Palladin © (18.07.08 13:56) [2]
>
> select @@Identity
>
Спасибо! Как раз то, что нужно!
sniknik (2008-07-18 14:09:00) [55]> Это Access
да, это все меняет... тогда надоselect @@Identity
stas (2008-07-18 14:02:00) [56]Palladin © (18.07.08 13:56) [2]
Это Access
Сергей М. (2008-07-18 13:56:00) [57]А другие уникальные ключи у этой таблицы имеются ?
Допускается ли модификация структуры таблицы для решения задачи ?
Допускается ли одновременная работа с таблицей в контексте более чем одной транзакции одновременнно ?
Palladin (2008-07-18 13:56:00) [58]select @@Identity