Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
8-1121750641
ShotGun
2005-07-19 09:24
2005.12.25
Как прграммно изменить разрешение рисунка?


8-1121420940
Илья.Сан
2005-07-15 13:49
2005.12.25
Частичная загрузка битмапов


14-1133269981
Антоний
2005-11-29 16:13
2005.12.25
Сервер


14-1133638993
Piter
2005-12-03 22:43
2005.12.25
Российские комманды в европейских кубках


14-1133431363
Post
2005-12-01 13:02
2005.12.25
Книга





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский