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

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

Позиционирование на вновь вставленную запись. [D6, MSSQL]


Hose ©   (2003-06-05 10:35:00) 

Коллеги! Существует ли некий встроенный в технологиюспособ получения ID новой записи? Пользую трехзвенку. На сервере ADODataSet на клиенте ClientDataSet. Пробовал после ApplyUpdates юзать RefreshRecord. Отлуп с ошибкой типа "раз не установлено значение ключа, то иди потренируйся пока". Оно в общем то и логично. Понятное дело, что можно извратиться и получить таки этот злосчастный ID, но мне кажется, что не может не быть какого-либо простого решения.


АлексейК   (2003-06-06 07:22:00) [1]

>через параметры возвращать значение @@IDENTITY после вставки...
@@IDENTITY выдаст нужное значение далеко не во всех случаях, в остальных случаях есть ф-ии IDENT_CURRENT, SCOPE_IDENTITY (что конкретно использовать можно узнать в справке). Нужно выбрать подходящий для тебя вариант.


Тих   (2003-06-06 01:39:00) [2]

Гуид в роли первичного ключа, генерирующийся на клиенте? Если не пугает рефакторинг существующих наработок - очень удобно.


Zelius   (2003-06-05 17:39:00) [3]

через параметры возвращать значение @@IDENTITY после вставки...


Sunches   (2003-06-05 16:56:00) [4]

Не существует.
Процедуру получения ID придется писать самому.
Я могу предложить несколько вариантов.
1.При добавлении новой записи на сервере получать ID из MS SQL и далее через Callback передавать клиенту.
2.Можно самому формировать ID, а не использовать Autoincrement fields.
3.Если структура базы такова, что в таблице присутствуют, кроме первичного ключа, который в вашем случае я так понимаю построен на базе автоинкрементного поля, еще уникальный индекс по другим полям, то можно после выполнения ApplyUpdates делать Refresh и через Locate находить нужную запись.


Наверх

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