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

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

TClientDataSet и автоинкриментые поля(MS Access, MS SQL Server)


salexn ©   (2005-12-06 12:24:00) 

Может ли TClientDataSet автоматически обновлять значения автоинкриментых полей MS Access и MS SQL Server? По "легенде" хэлпа - может. Кто-нить победил эту проблемку?


Nikolay M.   (2005-12-06 17:49:00) [1]


> Anatoly Podgoretsky ©   (06.12.05 16:41) [13]
> Вопрос документирован, находится в многичисленных FAQ

Для человека, который сам недавно спрашивал про неоднократно задокументированный @@IDENTITY в АДО, звучит более чем самонадеянно.


Nikolay M.   (2005-12-06 16:43:00) [2]


> как же быть с Access?

http://www.sql.ru/faq/faq_topic.aspx?fid=214
Q8.


Anatoly Podgoretsky   (2005-12-06 16:41:00) [3]

Вопрос документирован, находится в многичисленных FAQ


msguns   (2005-12-06 16:31:00) [4]

>Это АБСОЛЮТНО нетривиальный вопрос.

Вопрос многократнообсуждался на форуме - достаточно полазать по архивам.

В акцесе НЕТ ВОЗМОЖНОСТИ узнать значение автоинкремента ДО вставки (или СРАЗУ ПОСЛЕ, что по сути одно и то же). Существует единственный способ: Select MAX(ID)+1, который, ясное дело, страдает "локальностью".


salexn   (2005-12-06 16:27:00) [5]

Так что? Ответтов не будет?
>модератор
А за что этот пост перенесли в начинающие?
Это АБСОЛЮТНО нетривиальный вопрос.


salexn   (2005-12-06 16:27:00) [6]

Удалено модератором
Примечание: Действия модератора не обсуждаются, и причем тут вопрос, это относится к вопрошающим, ты пока начинающий и очень начинающий


salexn   (2005-12-06 15:09:00) [7]

ок. Если с MSSQL еще поняттно(SELECT @@IDENTITY), то как же быть с Access?
И еще как получить IDENTITY если идет "массовый" insert, а ApplyUpdates вызывается только 1 раз? Есть конечно вариант Close/Open.


Anatoly Podgoretsky   (2005-12-06 14:33:00) [8]

salexn   (06.12.05 14:16) [6]
СРАЗУ ПОСЛЕ в условиях многопользовательской работы. Рассказывать об SELECT @@IDENTITY не нужно. Я НЕ ДОЛЖЕН обращаться к серверу(SQL Server или AppServer) для получения значения. Хотелось бы сделать это СРЕДСТВАМИTClientDataSet + DataSetProvider.

Откуда же тогда возьмется несущесвуещее значение?
Оно появляется только после вставки на сервере


Nikolay M.   (2005-12-06 14:26:00) [9]


> SELECT @@IDENTITY не нужно.

+

> НЕ ДОЛЖЕН обращаться к серверу(SQL Server или AppServer)
> для получения значения

+

> Получение значения ДО ВСТАВКИ также не подходит

= невозможно.
Btw, интересно было бы узнать, почему перечисленные варианты неприменимы.


> аналогично тому как это сделано в ADO

Угу, АДО - это такая волшебная штука, которая делает невозможные вещи возможными. Не пожалей 5 минут времени, сделай программульку, в которой АДО "получает значение автоинкремента" и посмотри профайлером, что в этот момент происходит на SQL-сервере.


salexn   (2005-12-06 14:16:00) [10]

>msguns
СРАЗУ ПОСЛЕ в условиях многопользовательской работы. Рассказывать об SELECT @@IDENTITY не нужно. Я НЕ ДОЛЖЕНобращаться к серверу(SQL Server или AppServer) для получения значения. Хотелось бы сделать это СРЕДСТВАМИTClientDataSet + DataSetProvider.
Получение значения ДО ВСТАВКИ также не подходит. Вопрос именно в том, можно ли средствами TClientDataSet + DataSetProvider получить данные о значении автоинкрементногополя(аналогично тому как это сделано в ADO).


msguns   (2005-12-06 14:01:00) [11]

Тебе нужно узнать значение автоинкремента ДО вставки НОВОЙ записи или СРАЗУ ПОСЛЕ ?


salexn   (2005-12-06 13:41:00) [12]

после Post в ADO сраэу появляется значение этого поля(Автоинкрементного). Можно ли добиться такого же поведения от TClientDataSet + DataSetProvider?


msguns   (2005-12-06 13:38:00) [13]

Что значит "автоматически обновлять значения автоинкриментых полей" ?
Автоинкременты на то и авто, что они НЕ ОБНОВЛЯЮТСЯ.
Или я что-то не понял ?


salexn   (2005-12-06 13:33:00) [14]

Решить проблему можно?


msguns   (2005-12-06 12:47:00) [15]

А причем тут CDS, если с данными БД непосредственно работает провайдер ?


Наверх

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