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

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

Как получить id добавленной записи [D7, MSSQL]


Страницы:   1 2

ndg ©   (2007-01-23 20:59:00) 

Ситуация такова:
с помощью ADOCommand выполняю запрос
INSERT INTO Akadem (Student_ID, GoDate, AkademType, CurrentType) VALUES (:Std, :Dt, :ATp, :CTp)
После его выполнения мне надо узнать Student_ID добавленной мною записи. Подскажите, как ?


sniknik   (2007-01-24 10:24:00) [21]

> Я бы вообще в SP всё вынес.
имхо, перебор...


Ega23   (2007-01-24 08:53:00) [22]


> Palladin ©   (23.01.07 23:09) [3]


Низя так.
Я бы вообще в SP всё вынес.


sniknik   (2007-01-24 08:40:00) [23]

Palladin ©   (23.01.07 23:09) [3]
делить подобный пакет на 2 = добавить возможность ошибки. в этом случае есть ненулевая вероятность что идентити будет от другой команды.

> Эти ДВА запроса пишутся вместе, через ;
разделитель необязателен, можно даже в одну строчку через пробел, поймет.


Johnmen   (2007-01-23 23:20:00) [24]


> ndg   (23.01.07 22:33) [2]
> > SELECT @@identity AS newid
> Где писать этот запрос, в том же компоненте, где и запрос вставки ?

Эти ДВА запроса пишутся вместе, через ;

> И какому полю он возвращает результат ? Тут не указано.

Смотри внимательней.


ndg   (2007-01-23 23:15:00) [25]

Спасибо, всё логично и понятно


Palladin   (2007-01-23 23:10:00) [26]

извиняюсь

 SQL.Open;
 ShowMessage('ID='+Fields[0].AsString);
 SQL.Close;

заменить на

 Open;
 ShowMessage('ID='+Fields[0].AsString);
 Close;


Palladin   (2007-01-23 23:09:00) [27]

With TADOQuery.Create(Nil) Do
 Try
  Connection:=...
или
  ConnectionString:=...

  SQL.Text:='Insert ...
  ExecSQL;
  SQL.Text:='Select @@Identity';
  SQL.Open;
  ShowMessage('ID='+Fields[0].AsString);
  SQL.Close;
 Finally
  Free;
 End;

это для простоты понимания, используя ADOCommand можно сделать тоже самое, но писать придется больше


ndg   (2007-01-23 22:33:00) [28]


> SELECT @@identity AS newid


Где писать этот запрос, в том же компоненте, где и запрос вставки ?
И какому полю он возвращает результат ? Тут не указано.


Johnmen   (2007-01-23 21:49:00) [29]

INSERT INTO ... ;
SELECT @@identity AS newid


Страницы:   1 2

Наверх

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