![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
DimaBy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.2.2006 Репутация: нет Всего: нет |
При создании новой записи значение автоинкрементального поля генерирует сам Dataset, затем при обновлении базы методом update значение этого поля обновляется значение, которое генерирует сам Access. При этом зачастую эти значения не совпадают. Можно ли как-то синхронизировать генерацию этого поля.
Р.S. В таблица реализует многоуровневую структуру и в качестве идентификатора родителя используется ID родительской записи. Можно было бы конечно завести в каждой ячейке целочисленное поле, которому присваивать значение автоинкремента, сгенерированное датасетом, и потом ссылаться на это значение. В принципе от этого уникальность не пострадает, но мне это кажется отнюдь не самым аккуратным вариантом. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
DimaBy, эта проблема решается элементарно: в поле нужно установить начальное значение -1 и автоинкремент -1, тогда в датасете поле с автоинкрементом будет расти в другую сторону и никогда не пересечётся со значением из БД.
![]() Предугадывая закономерный вопрос - отрицательные айдишники работают так же нормально, как и положительные. -------------------- ![]() |
|||
|
||||
DimaBy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.2.2006 Репутация: нет Всего: нет |
Не понимаю
![]() Я реализую многоуровневую структуру. - прохожу дерево, добавляю для каждого узла запись, запоминаю её ID, потом для всех потомковустанавливаю поле родителя равным этому ID. Но ID то неправильный! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Сорри, я думал вопрос о том как избежать пересечения автоинкремента в БД и новых записях в датасете. Теоретически, если между таблицами есть DataRelation, в момент сохранения (dataAdapter.Update(dataSet)) все связи между таблицами обновляются автоматически - ID во всех таблицах синхронизируются. -------------------- ![]() |
|||
|
||||
DimaBy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.2.2006 Репутация: нет Всего: нет |
не обновляются
1)создаю Row с помощью NewRow 2)добавляю его в Rows 3)делаю (dataAdapter.Update(dataSet)) 4)у Row все равно значение датасетовское а не Access'овское помогает только
но это как-то нерационально Это сообщение отредактировал(а) DimaBy - 21.3.2007, 11:10 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Там как-то надо передать Identity из запроса обратно, через выходной параметр по-моему... Не шарю в этом, надо у других спросить.
-------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |