Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не получается произвести изменения в базе, Access 
:(
    Опции темы
Teran
  Дата 17.5.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



есть база данных
данные из нее получается вытануть в ListView:
Код

    int CountRow=DSet.Tables["CONTACT"].Rows.Count;
    for(int i=0;i<CountRow;i++)
    {
                   ListViewItem Item=listView1.Items.Add("");
        Item.ImageIndex=0;
       Item.SubItems.Add(DSet.Tables["CONTACT"].Rows[i]["TITLE_TX"].ToString());
                 }

но вот произвести изменения и сохранить не выходит:
Код

    int CountRow=DSet.Tables["CONTACT"].Rows.Count;
    for(int i=0;i<CountRow;i++)
    {
                   ListViewItem Item=listView1.Items.Add("");
        Item.ImageIndex=0;
       Item.SubItems.Add(DSet.Tables["CONTACT"].Rows[i]["TITLE_TX"].ToString());
                
                DSet.Tables["CONTACT"].Rows[i]["TITLE_TX"]="4654564645645";

    DataSet xDataSet;            
    f ( DSet.HasChanges( DataRowState.Added | DataRowState.Modified ) )
    {
    xDataSet = DSet.GetChanges( DataRowState.Added | DataRowState.Modified );                
                
    FormMain.Base.DbDataAdapter.Update( xDataSet, "CONTACT" );
  
                 }
                 }

может кто знает как нужно правильно? smile  smile  smile  


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
arilou
Дата 17.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



И что же именно не выходит? Или наоборот, и что из этого выходит?  Совсем запутался...   smile Короче, какая ошибка? 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Teran
Дата 17.5.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Когда выполняется последняя строка: FormMain.Base.DbDataAdapter.Update( xDataSet, "CONTACT" );
 вылетает ошибка:
Код

An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll

Additional information: Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
arilou
Дата 17.5.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



Цитата(Teran @  17.5.2006,  12:16 Найти цитируемый пост)
Update requires a valid UpdateCommand when passed DataRow collection with modified rows

Именно тут все и написано. Если не уверен в своем знании английского, то иногда помогает воспользоваться http://www.translate.ru

В датадаптере надо заполнить UpdateCommand валидной командой. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Teran
Дата 17.5.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(arilou @  17.5.2006,  12:29 Найти цитируемый пост)
В датадаптере надо заполнить UpdateCommand валидной командой. 

а можеш написать чтото вроди кода? 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
arilou
Дата 17.5.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



Teran, перетягиваешь себе на форму таблицу БД из Server Explorer и все сгенерится.

Код зависит от стр-ры таблицы - это раз, и второе - в MSDN есть просто тонна примеров 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Teran
Дата 17.5.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



что-то я запутался в этой структурой....

я непойму при Update еще нужно и команду какуюто писать? 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
arilou
Дата 17.5.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 4
Всего: 61



Teran, да. Если с SQL Server работаешь, то SQLCommand, иначе - OleDbCommand. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Teran
Дата 17.5.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Допустим у меня в базе таблица ("CONTACT") и в ней имеются 4 поля (CONTACT_ID - числовой и три текстовых: TITLE,FIRST,LAST)

при чем могут изменятся не все 3 поля сразу.

подскажи пожалуйста как мне огранизовать UpdateCommand


в MSDN нашел чтото но не могу припаять к своим названиям полей:
Код

public static OleDbDataAdapter CreateCustomerAdapter(OleDbConnection conn)
{
  OleDbDataAdapter da = new OleDbDataAdapter();
  OleDbCommand cmd;
  OleDbParameter parm;

  // Create the UpdateCommand.

  cmd = new OleDbCommand("UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
                       "WHERE CustomerID = @oldCustomerID", conn);

  cmd.Parameters.Add("@CustomerID", OleDbType.Char, 5, "CustomerID");
  cmd.Parameters.Add("@CompanyName", OleDbType.VarChar, 40, "CompanyName");

  parm = cmd.Parameters.Add("@oldCustomerID", OleDbType.Char, 5, "CustomerID");
  parm.SourceVersion = DataRowVersion.Original;

  da.UpdateCommand = cmd;

  return da;
}


  smile smile  smile  


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Wanderer2019
Дата 17.5.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



это значит что в DataAdapter`е нет команды на обновление таблицы. Возникает в случает если ты не используешь визуальные компоненты, а прописываешь все connection и т.д. прямо в коде. Получатся что Insert, Select и Update команды этого адаптера пусты, а именно их он использует при вызове метода Update. Поэтому если запрос простой то можно вписывать самому в теле программы. Если же сложный тоя бы написал хранимую процедуру и вызывал ее. 
PM ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.