Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с автоинкрементальным полем в ADO.NET, MSAccess 
:(
    Опции темы
DimaBy
Дата 21.3.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



При создании новой записи значение автоинкрементального поля генерирует сам Dataset, затем при обновлении базы методом update значение этого поля обновляется значение, которое генерирует сам Access. При этом зачастую эти значения не совпадают. Можно ли как-то синхронизировать генерацию этого поля. 
Р.S. В таблица реализует многоуровневую структуру и в качестве идентификатора родителя используется ID родительской записи. Можно было бы конечно завести в каждой ячейке целочисленное поле, которому присваивать значение автоинкремента, сгенерированное датасетом, и потом ссылаться на это значение. В принципе от этого уникальность не пострадает, но мне это кажется отнюдь не самым аккуратным вариантом.
PM MAIL   Вверх
mr.DUDA
Дата 21.3.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



DimaBy, эта проблема решается элементарно: в поле нужно установить начальное значение -1 и автоинкремент -1, тогда в датасете поле с автоинкрементом будет расти в другую сторону и никогда не пересечётся со значением из БД.  smile 

Предугадывая закономерный вопрос - отрицательные айдишники работают так же нормально, как и положительные. 


--------------------
user posted image
PM MAIL WWW   Вверх
DimaBy
Дата 21.3.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Не понимаю smile 
Я реализую многоуровневую структуру. 
 - прохожу дерево, добавляю для каждого узла запись, запоминаю её ID, потом для всех потомковустанавливаю поле родителя равным этому ID. Но ID то неправильный!
PM MAIL   Вверх
mr.DUDA
Дата 21.3.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(DimaBy @  21.3.2007,  09:25 Найти цитируемый пост)
Я реализую многоуровневую структуру. 

Сорри, я думал вопрос о том как избежать пересечения автоинкремента в БД и новых записях в датасете.

Цитата(DimaBy @  21.3.2007,  09:25 Найти цитируемый пост)
Я реализую многоуровневую структуру.  - прохожу дерево, добавляю для каждого узла запись, запоминаю её ID, потом для всех потомков устанавливаю поле родителя равным этому ID. Но ID то неправильный!

Теоретически, если между таблицами есть DataRelation, в момент сохранения (dataAdapter.Update(dataSet)) все связи между таблицами обновляются автоматически - ID во всех таблицах синхронизируются.


--------------------
user posted image
PM MAIL WWW   Вверх
DimaBy
Дата 21.3.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



не обновляются 
1)создаю Row с помощью NewRow
2)добавляю его в Rows
3)делаю (dataAdapter.Update(dataSet))
4)у Row все равно значение датасетовское а не Access'овское

помогает только
Код

dataAdapter.Update(dataSet)
dataAdapter.Fill(dataSet)
row = dataset.rows[dataset.rows.count-1]


но это как-то нерационально

Это сообщение отредактировал(а) DimaBy - 21.3.2007, 11:10
PM MAIL   Вверх
mr.DUDA
Дата 21.3.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Там как-то надо передать Identity из запроса обратно, через выходной параметр по-моему... Не шарю в этом, надо у других спросить.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.