Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.016 c