Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Как сбросить AutoIncrement?


Автор: Нов 7.9.2008, 18:06
Суть проблемы - я реализую добавление/удаление/модернизацию DataTable в ручную. Есть DataColumn "№" созданное в DataSet - В базе данных его нет. 
  Заполняю с помощью SqlDataAdapter.
При установке в конструкторе (либо в коде) его свойств: 
Код

 IDColumn.AutoIncrement = true;
 IDColumn.AutoIncrementSeed = 1;
 IDColumn.AutoIncrementStep = 1;

При первой загрузке все нормально. При втором заполнении DataSet, значения не обнуляются, а идут с того числа, которым заканчивались до повторного заполнения. 
 Итак вопрос - как обнулить значения AutoIncrement ?
 

Автор: bax 8.9.2008, 15:02
Dumayu nado napisat tak:

IDColumn.AutoIncrement = false;
IDColumn.AutoIncrement = true;
 IDColumn.AutoIncrementSeed = 1;
 IDColumn.AutoIncrementStep = 1;

no esli tak mojet vozniknut oshibka, chto unikalnost ne soblyudaetsya
esli zapis s takim nomerom ne sushestvuet vsyo buet normalno

Автор: Нов 8.9.2008, 21:28
Цитата(bax @ 8.9.2008,  15:02)
Dumayu nado napisat tak:



no esli tak mojet vozniknut oshibka, chto unikalnost ne soblyudaetsya
esli zapis s takim nomerom ne sushestvuet vsyo buet normalno


Код

IDColumn.AutoIncrement = false;
IDColumn.AutoIncrement = true;
 IDColumn.AutoIncrementSeed = 1;
 IDColumn.AutoIncrementStep = 1;

Пробовал - не помогает. Не сбрасывается  smile 

Автор: Idsa 9.9.2008, 00:34
Цитата(Нов @  7.9.2008,  22:06 Найти цитируемый пост)
Итак вопрос - как обнулить значения AutoIncrement ?

Насколько я знаю, в DataTable, как и в базе данных, обнулить Autoincrement-поле нельзя.

Цитата(Нов @  7.9.2008,  22:06 Найти цитируемый пост)
Есть DataColumn "№" созданное в DataSet - В базе данных его нет. 
  Заполняю с помощью SqlDataAdapter.

Не уверен, что поможет в этом случае, но можно попробовать поиграться с DataAdapter.MissingSchemaAction

Автор: Нов 20.9.2008, 17:16
Проблему решил. Вот каким образом 
Код

if (InitComplete)
             charge.DataTableCharge.Columns.Remove(charge.DataTableCharge.Columns["№"]);
             DataColumn Number = new DataColumn("№", typeof(int));
             Number.Caption = "s";
             Number.ReadOnly = true;
             Number.AllowDBNull = false;
             Number.AutoIncrement = true;
             Number.AutoIncrementSeed = 1;
             Number.AutoIncrementStep = 1;            
             charge.DataTableCharge.Columns.Add(Number);

InitComplete - булево значение - первая загрузка или нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)