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

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

TADOCommand.Execute и возвращаемый им RecordSet [D7, MSSQL]


Maxim Volobuev ©   (2004-04-19 15:35:00) 

Мастера, помогите примерчиком на такую тему: выполняю ADOCommand.Execute с Insertом в таблицу и мне нужно получить свежевставленную запись. Но пример из справки по Execute ADODataSet1.RecordSet := ADOCommand1.Execute; не работает, говорит, что RecordSet должен быть открыт, причем говорит это вне зависимости от того, открыт ADODataSet1 или нет.
Кто это уже делал, напишите пример, как правильно работать с возвращаемым RecordSet.


KSergey   (2004-04-19 17:00:00) [1]

Только если сервер 2k - обязательно прочитайте о различиях между @@IDENTITY и @@SCOPE_IDENTITY. Это очень важно!

PS
А если бы сразу почитать - то и

[5] Maxim Volobuev   (19.04.04 16:06)
> Использовать где!!??

не было бы, т.к. там все написано.


Maxim Volobuev   (2004-04-19 16:39:00) [2]

Огромное спасибо, все заработало!


Ega23   (2004-04-19 16:10:00) [3]

Set NoCount ON
Declare @X int
Insert into ... Values .....

SELECT @X=@@IDENTITY

Set NoCount OFF
Select ... from .... where .... and ID=@X


Maxim Volobuev   (2004-04-19 16:06:00) [4]

Использовать где!!??


KSergey   (2004-04-19 16:03:00) [5]

Использовать @@IDENTITY или @@SCOPE_IDENTITY в зависимости от версии сервера (2k - @@SCOPE_IDENTITY, название точно не помню)


Maxim Volobuev   (2004-04-19 15:59:00) [6]

Да в общем то дело в том, что в таблице есть Identity поле, которое само проставляется SQL-сервером. И сразу после Insert мне нечего писать в where, я просто не знаю какое значение сервер присвоил этому полю.


Ega23   (2004-04-19 15:45:00) [7]

но ты можешь объединить INSERT и SELECT в одну транзакцию

Set NoCount ON
Insert into ... Values .....
Set NoCount OFF
Select ... from .... where ....


stone   (2004-04-19 15:40:00) [8]

ADODataSet1.RecordSet := ADOCommand1.Execute срабатывает только втом случае, если ADOCommand1.CommandText := 'select ...
т.е. результат выполнения обязательно должен вернуть набор данных.


Наверх

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