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

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

Вопрос про запрос [D6, MSSQL]


Сергей Ю. ©   (2004-09-03 20:23:00) 

Как можно получить значение идентификатора последней записи? В форуме пробегал вот такой вариант: select @@IDENTITY as IDzakaz, но почему нет имени таблицы в этом запросе? Результатом выполнения запроса является ноль полей :( Где я торможу? (В SQL-е я полный профан, но мне очень надо :))
И еще - после 5-6 раз запуска проги дельфа ругается что нехватает памяти для выполнения запроса. После закрытия/открытия дельфы все в норме опять на 5-6 раз. В чем косяк?


Ega23   (2004-09-06 10:26:00) [1]

Как можно получить значение идентификатора последней записи? В форуме пробегал вот такой вариант: select @@IDENTITY as IDzakaz, но почему нет имени таблицы в этом запросе? Результатом выполнения запроса является ноль полей :( Где я торможу? (В SQL-е я полный профан, но мне очень надо :))

Ты неправильно "слышал". Делать надо так:
Declare @X int
Insert into Table1 (Col1, Col2, ... , ColN)
           Values (Val1, Val2, ... , ValN)        
И сразу-же следующей строкой:
Select @X=@@IDENTITY


Более подробно про @@IDENTITY читай в BOL.


И еще - после 5-6 раз запуска проги дельфа ругается что нехватает памяти для выполнения запроса. После закрытия/открытия дельфы все в норме опять на 5-6 раз. В чем косяк?


"Рваные коннекты" остаются. Поди Program Reset часто делаешь. Или Ctrl+F2 (что одно и то же :о))...


Сергей Ю.   (2004-09-06 09:35:00) [2]

Сорри за мою тупость. Все сам разобрался. Всем спасибо.


Сергей Ю.   (2004-09-06 09:18:00) [3]

Стандартно это как? Так: Query.FieldbyName['idzakaz'].asinteger - неработает :(?


sniknik   (2004-09-06 08:52:00) [4]

> надо писать from таблица или нет
не надо, надо только выполнять строго после вставки (чтобы было не ноль а нужное число)
если нужна привязка к таблице (ну вставляеш в несколько таблиц после нужны их автоинкременты) используй IDENT_CURRENT('table_name')

> И главное - как взять результат выполнения запроса?
стандартно как и из просто таблици.


Сергей Ю.   (2004-09-06 07:37:00) [5]

Я непонял: надо писать from таблица или нет (см. ответ fay)? И главное - как взять результат выполнения запроса?


kvit   (2004-09-04 12:10:00) [6]

При закрытиии программы поставь закрытие конекта с базой


kvit   (2004-09-04 12:09:00) [7]

select @@IDENTITY as IDzakaz from Table1

это делается после вставки


Сергей Ю.   (2004-09-04 11:40:00) [8]

Тогда как обратиться к результату запроса (select @@IDENTITY as IDzakaz)? Query.FieldbyName['idzakaz'].asinteger говорит что колонка idzakaz несуществует :(


Fay   (2004-09-03 21:47:00) [9]

>>  но почему нет имени таблицы в этом запросе?
Не нужно. Это не Oracle.


YurikGL   (2004-09-03 21:27:00) [10]


> Сергей Ю.   (03.09.04 20:23)  

По поводу 1-го то можно сказать last, но после дейсвия набор данных может неожиданно измениться т.к. другой человек добавит запись.
По поводу второго - где то что-то не освобождаешь.


Наверх

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