Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему-то первая запись с ключом 0  [new]
Ansen
Member

Откуда:
Сообщений: 3
Добрый день!
Создаю таблицу
CREATE TABLE [ListTest] (
            IdTest         INT IDENTITY(1,1) PRIMARY KEY NOT NULL, 
            Дата           DATETIME NOT NULL,
            ......

Связываю с DataGridView следующим образом:
            SqlCeCommand Comm = new SqlCeCommand();
            Comm.Connection = Connect;
            Comm.CommandText = "select * from ListTest";
            DataTable dt = null;
            SqlCeDataAdapter adap = new SqlCeDataAdapter(Comm);
            DataSet Set = new DataSet();
            adap.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            adap.Fill(Set);
            dt = Set.Tables[0];
            DataColumn[] keys = new DataColumn[1];
            keys[0] = dt.Columns[0];
            dt.PrimaryKey = keys;
            dGView.DataSource = dt;
После этого я могу вводить данные через DataGridView, при этом значение ключа в соответствующем Cell в гриде появляется автоматически, при выделении других Cell для ввода данных.
Все бы ничего, но при вводе первой записи в Cell ключа появляется не 1, а 0(ноль)!
Последующие записи вводятся со "сдвигом" ключа на 1!
Если выйти из проги, и опять зайти, то в гриде все значения ключа уже "нормальные", т.е. 1 запись с ключом 1, вторая 2 и т.д.
Ввод последующих записей - без проблем.
Что тут не так?
8 мар 14, 20:40    [15693604]     Ответить | Цитировать Сообщить модератору
 Re: Почему-то первая запись с ключом 0  [new]
aleks2
Guest
Заковыристо открываете recordset.
Проще надо

            SqlCeCommand Comm = new SqlCeCommand();
            Comm.Connection = Connect;
            Comm.CommandText = "select * from ListTest";
            dGView.DataSource = Comm.Execute;
9 мар 14, 09:56    [15694916]     Ответить | Цитировать Сообщить модератору
 Re: Почему-то первая запись с ключом 0  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
aleks2,

там не в заковыристости дело.

Пока данные не сохранены в базе, клиент не знает значения IDENTITY для только что добавленных строк, и условно нумерует их самостоятельно, в меру своего разумения.
Вот только я почему-то думал, что для них будет отрицательная нумерация: -1, -2, итд.

Естественно, после сохранения в базе и повторного считывания в клиент, будут показаны "правильные" (считанные из базы) значения ключей
9 мар 14, 13:21    [15695228]     Ответить | Цитировать Сообщить модератору
 Re: Почему-то первая запись с ключом 0  [new]
Ansen
Member

Откуда:
Сообщений: 3
aleks2 - без "заковыристости" первичного ключа не увидит...
Но все же! При втором и всех последующих входах в программу приращение ключа нормально работает при добавлении записи и ключ СРАЗУ нормальный! Что-то тут странно...
10 мар 14, 23:18    [15701268]     Ответить | Цитировать Сообщить модератору
 Re: Почему-то первая запись с ключом 0  [new]
aleks2
Guest
Ansen
aleks2 - без "заковыристости" первичного ключа не увидит...

Фантазер.
Компоненты доступа к данным гораздо лучше тебя умеют запрашивать метаданные.
11 мар 14, 05:30    [15702129]     Ответить | Цитировать Сообщить модератору
 Re: Почему-то первая запись с ключом 0  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Ansen
Но все же! При втором и всех последующих входах в программу приращение ключа нормально работает при добавлении записи и ключ СРАЗУ нормальный! Что-то тут странно...
Запустите второй экземпляр программы, добавьте в каждом экземпляре новую строку (различные), и сравните значения ключей - они одинаковы?
11 мар 14, 07:20    [15702158]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить