![]() |
| ||
|
|
Новости |
Поиск |
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].
Anatoly Podgoretsky (2008-08-01 09:43:00) [1]Ну так в Акцесс, что по отдельности, что вместе результат одинаков - это же файлсерверная БД
По идеологии SQL как было задумано голубым гигантом и как позволяла тогда техника (телетайпы) надо было как то завершать инструкцию, что бы ее можно было выполнить, для этой цели была выбрана точка с запятой.
При программном решение это нонсенс, если только не рассматривать это как набор независимых инструкций, но система поддержки должна поддерживать это.
А вот конструкция, для T-SQL или подобных
инструкция1
...
инструкция N
Это одна инструкция и естественно она выполняется как единое целое, на этом кстати основан и SQL Ejection
Не уверен, что это было хорошей идеей.
Нат (2008-07-31 18:09:00) [2]В акцессе можно ставить точку с запятой после запроса, однако акцесс не терпит после больше ничего, т.к. считает ";" завершением инструкции.
Не прокатывает такая конструкция.
Вобчем и без запятой тож не хочет.
Ток по-отдельности.
Anatoly Podgoretsky (2008-07-31 13:44:00) [3]Ну вообще то тема по Акцесс.
Ладно не знаешь, но не так это и важно. Когда будет важно, то проверка займет несколько секунд.
Ega23 (2008-07-31 11:19:00) [4]
> Акцесс требует точки с запятой между частями?
Ну это не для Access, это TSQL. А точка с запятой - это уже просто тупо привычка. Многие СУБД требуют. TSQL не требует, но ставить можно.
Anatoly Podgoretsky (2008-07-31 11:14:00) [5]> Ega23 (31.07.2008 10:40:53) [53]
Акцесс требует точки с запятой между частями?
Ega23 (2008-07-31 10:40:00) [6]
> А как тебе удалось загнать обе команды в один запрос?
А в чём проблема?
ADODataSet1.CommandText := 'Set NoCount ON;
Insert into xxx (aName) Values ('111');
Insert into xxx (aName) Values ('222');
Insert into xxx (aName) Values ('333');
Insert into xxx (aName) Values ('444');
Insert into xxx (aName) Values ('555');
Insert into xxx (aName) Values ('666');
Set NoCount OFF;
Select * from xxx';
ADODataSet1.Open;
Нат (2008-07-31 03:15:00) [7]MsGuns
> cm.CommandText := 'Insert ... '+' Select @@indentity';
А как тебе удалось загнать обе команды в один запрос?
И на какой версии Акцесса?
Игорь Шевченко (2008-07-30 15:40:00) [8]Ega23 © (30.07.08 15:27) [50]
"Старайтесь избегать «оффтопиков». Добавляя свое сообщение, убедитесь, что оно соответствует обсуждаемой теме"
http://www.delphimaster.ru/forums.shtml#rule
Ega23 (2008-07-30 15:27:00) [9]
> Oracle XE наше все :)
Ацтой Оракл, ini-файлы рулят.
Игорь Шевченко (2008-07-30 15:15:00) [10]Sergey13 © (30.07.08 15:10) [48]
> Надо НЕ использовать Access, тогда заработает RETURNING
Абсолютно верно - Oracle XE наше все :) К тому же там есть средство миграции из Access-а, если мне память не изменяет
Sergey13 (2008-07-30 15:10:00) [11]> [47] Игорь Шевченко © (30.07.08 14:55)
Надо НЕ использовать Access, тогда заработает RETURNING. 8-)
Игорь Шевченко (2008-07-30 14:55:00) [12]Надо использовать RETURNING. Это правда тоже не в Access-е, но какая нахрен разница ?
Anatoly Podgoretsky (2008-07-30 14:48:00) [13]> stas (30.07.2008 13:56:45) [45]
Читай все обсуждение.
stas (2008-07-30 13:56:00) [14]Anatoly Podgoretsky © (30.07.08 13:30) [40]
где там?
Anatoly Podgoretsky © (30.07.08 13:30) [40]-[43]
Разошелся...
Нат (2008-07-30 13:40:00) [15]Серверный курсор имеет место быть, однако с закладки пожелали счастливо оставаться.
Без закладко грид ничего не смог отобразить.
На этом и расстались.
С серверной стороной в Акцессе.
Anatoly Podgoretsky (2008-07-30 13:34:00) [16]Кстати а вас не очень занесло с триггерами в Акцесс?
Anatoly Podgoretsky (2008-07-30 13:33:00) [17]
> Разве что прямо на серверной стороне... ну там свои штуки.
Где ты нашел серверную сторону в Акцесс?
Anatoly Podgoretsky (2008-07-30 13:32:00) [18]> Нат (30.07.2008 12:26:36) [36]
А нафига Insert - ты думаешь факт определения ИД изменится, если делать вставку с помощью запроса.
Anatoly Podgoretsky (2008-07-30 13:30:00) [19]> stas (30.07.2008 11:51:34) [34]
А там он определен, если ты не заметил.
stas (2008-07-30 13:14:00) [20]есть @@Identity, чего еще заморачиваться?