Новая запись в паре DataGridView - DataTable

Форум посвящён работе с базами данных в .NET.

Модератор: Ramzes

Varaktor
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 15.09.2007 (Сб) 10:50

Новая запись в паре DataGridView - DataTable

Сообщение Varaktor » 27.12.2007 (Чт) 18:09

Пожалуйста, объясните чайнику:
На форме DataGridView (DGV), связан с Datatable (DT). DT заполняется данными из таблицы БД Access и обновляет их обратно. Проблема с добавлением новой записи. В исходной таблице ключевое поле - счетчик. В DGV в новой записи заполняю поля кроме ключа и даю команду на обновление. VS2005 ругается, что поле ключа является пустым. В другой форме своего проекта я с использованием той же процедуры обновления записываю в базу новую запись, созданную не в гриде, а непосредственно в коде. Такое же ключевое поле не трогаю - все проходит на ура, запись создается в базе данных. Чего только не перепробовал, облазил весь форум, не могу понять, в чем разница и как ее устранить.

Varaktor
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 15.09.2007 (Сб) 10:50

Сообщение Varaktor » 28.12.2007 (Пт) 8:29

Ну подскажите. Почему при создании записи в датасете программно значение ключевого поля генерится автоматически, а при создании новой записи через datagridview значение ключевого поля не генерится. Что надо сделать?
Неужели все уже ушли на елку?

cosmo_vk
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 26.12.2006 (Вт) 12:07
Откуда: Владимирская обл, г.Ковров

Сообщение cosmo_vk » 07.01.2008 (Пн) 11:03

Значит неправильно делаешь Update!

Код: Выделить всё
  private DataSet GetDataCart()
        {           
            OleDbCommand selectCart = new OleDbCommand();
            OleDbConnection selectCartConn = new OleDbConnection(pathToConnect);         
            selectCart.CommandText = "Select ID as [УН],  Name_cart as [Наименование картриджа] from Name_Cart order by Name_cart";
            selectCart.Connection = selectCartConn;         
            selectAdCart.SelectCommand = selectCart;
            myCommBulder = new OleDbCommandBuilder(selectAdCart);         
            selectAdCart.Fill(dsCart, "SelectCart");           
            return dsCart;
        }

        private void Form1_Closing(object sender, FormClosingEventArgs e)
        {
            dgvCart.Refresh();
            selectAdCart.Update(dsCart, "SelectCart");
        }


Вернуться в ADO.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList