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


Автор: wolk 24.7.2010, 11:01
Весь нет облазил не смог решить свою проблему. Работаю в visualstudio 2010. Подключаюсь к базе через интерфейс, то есть в окне  datasourse. Создаю на форме datаgridviwer(переменовал в stoim ).  В уголке выбираю таблицу которую он должен показывать. Добавляю 2 кнопки для сохранения и удаления. 
У меня база называется BASE.accdb, Таблица с которой я работаю в этой базе "Города стоимость"
В кнопке удаления написал:
Код

 городаСтоимостьBindingSource.RemoveCurrent();
            bASEDataSet.AcceptChanges();

Она работает великолепно.
В кнопке сохранения написал:
Код

 try
            {
               
                this.города_стоимостьTableAdapter.Update(this.bASEDataSet.Города_стоимость);
            
                MessageBox.Show("Сохранено!",
                  "Уведомление о результатах", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

Она работает, но только она сохраняет данные новые которые я только что добавил, а если я изменяю существующие, то она мне пишет:"update requires a valid UpdateCommand when passed DataRow collection with modified rows". Типа я ей должен указать  что я изменил, чтобы она могла это сохранить, а как это сделать я не знаю smile . Подскажите пожалуйста smile.  Раньше сидел на Delphi, но так как он начал сильно сдавать вот решил перейти на С, но здесь с базами как то все сложно. 
Натыкался на тему где говорили что у базы должен быть первичный ключ (у меня его не было до создания связи.) он вообще нужен для моей цели или нет? И вообще везде подключается к базам через код а не через интерфейс как сделал я, может так лучше? Или разницы нет?  

Автор: Экскалупатор 24.7.2010, 12:03
Цитата(wolk @  24.7.2010,  10:01 Найти цитируемый пост)
но здесь с базами как то все сложно. 

да ну. мне кажется во сто крат проще тут, это все организованно. читай ADO.NET там все это будет расписано. а для твоей проблемы я думаю тебе надо посмотреть запрос Update. и скормить ему измененные данные.


Цитата(wolk @  24.7.2010,  10:01 Найти цитируемый пост)
Натыкался на тему где говорили что у базы должен быть первичный ключ (у меня его не было до создания связи.) он вообще нужен для моей цели или нет? И вообще везде подключается к базам через код а не через интерфейс как сделал я, может так лучше? Или разницы нет?   

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

Автор: wolk 24.7.2010, 14:51
Цитата

 для твоей проблемы я думаю тебе надо посмотреть запрос Update. и скормить ему измененные данные.

Вот про это можно по подробней как это сделать, а то я вообще ни где не могу найти про это хоть что ни будь smile 

Автор: Экскалупатор 24.7.2010, 16:39
про что именно? я же написал, нужно читать про ADO.NET, и про те контролы которые ты используешь. 

http://books.google.com.by/books?id=U3Cbiv4Z2FAC&pg=PA244&lpg=PA244&dq=datatable+%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5+%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8&source=bl&ots=7_EjcaCj6P&sig=bWC86JM0YxRLongfOrRmTKgytq4&hl=ru&ei=yuhKTObnG8HuObq_mZYD&sa=X&oi=book_result&ct=result&resnum=8&ved=0CD4Q6AEwBw#v=onepage&q=datatable%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8&f=false

Автор: wolk 24.7.2010, 16:56
Спасибо буду изучать smile .Просто я не думал что по ADO книгу целую написали, и искал всякие статьи, где ни фига не понятно местами.

Автор: wolk 25.7.2010, 12:35
Все разобрался! smile  Еще раз спасибо Экскалупатор. 

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