Вниз
Скачать: CL | DM;

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

← →
salexn   (2005-12-06 12:24) [0]

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


← →
msguns ©   (2005-12-06 12:47) [1]

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


← →
salexn   (2005-12-06 13:33) [2]

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


← →
msguns ©   (2005-12-06 13:38) [3]

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


← →
salexn   (2005-12-06 13:41) [4]

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


← →
msguns ©   (2005-12-06 14:01) [5]

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


← →
salexn   (2005-12-06 14:16) [6]

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


← →
Nikolay M. ©   (2005-12-06 14:26) [7]


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

+

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

+

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

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


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

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


← →
Anatoly Podgoretsky ©   (2005-12-06 14:33) [8]

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

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


← →
salexn   (2005-12-06 15:09) [9]

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


← →
salexn   (2005-12-06 16:27) [10]

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


← →
salexn   (2005-12-06 16:27) [11]

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


← →
msguns ©   (2005-12-06 16:31) [12]

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

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

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


← →
Anatoly Podgoretsky ©   (2005-12-06 16:41) [13]

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


← →
Nikolay M. ©   (2005-12-06 16:43) [14]


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

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


← →
Nikolay M. ©   (2005-12-06 17:49) [15]


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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.038 c
2-1134256608
Destroyer
2005-12-11 02:16
2005.12.25
Диалог выбора папки


2-1133782011
Мерцание
2005-12-05 14:26
2005.12.25
Что-то подобное Blink в BP


14-1133370769
Sun bittern
2005-11-30 20:12
2005.12.25
Поиск файлов "Win+F" <> "FindFirst" <> "FindFirstFile"


14-1133336045
msguns
2005-11-30 10:34
2005.12.25
Kansas. Magnum Opus. Утопание в кайфе


1-1133027361
SergP
2005-11-26 20:49
2005.12.25
Прерывание Thread из-за исключения...




   Наверх