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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нет изменений в базе, поиском и в ручную не нашел решения 
V
    Опции темы
stashe
Дата 20.5.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



не матюкайтесь, решения по форуму не нашел, ситуация следующая
Использую DataSet, BindingSource и TableAdapter (база Access), не использую никаких комманд, ДатаАдаптеров и т.д. все делал только дизайнером.

После изменения таблицы (добавления Row) вызываю запись в БД, ничего не происходит, не матюкается, но и не пишет..

  private void WriteToDataBase()
        {
            requestsTableAdapter.Update(cennye_bumagiDataSet);
            cennye_bumagiDataSet.AcceptChanges();
            cennye_bumagiDataSet.Tables["Requests"].AcceptChanges();            

        }

??????
PM   Вверх
stashe
Дата 20.5.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



к примеру удаление
 cennye_bumagiDataSet.Tables["Trades"].Rows.RemoveAt(dataGridView1.CurrentRow.Index);
или добавление ряда

Код

  DataRow r;
            if (!isRewriteRecord)  r = cennye_bumagiDataSet.Tables["Trades"].NewRow();
            else r = cennye_bumagiDataSet.Tables["Trades"].Rows[dataGridView1.CurrentRow.Index];
                r["ID"] = trade.KodZayavkiTextBox.Text;
          //      r["Name"] = trade.comboBox3.Text;
                r["RegDate"] = trade.dateTimePicker2.Value;
                r["TradeDate"] = trade.dateTimePicker2.Value;
                r["IDSale"] = trade.comboBox8.Text;
                r["IDBuyer"] = trade.comboBox9.Text;
                r["Value1"] = trade.comboBox4.Text;
                r["Value2"] = trade.comboBox5.Text;
                r["Amount"] = trade.numericUpDown8.Value;
                r["Currency"] = trade.comboBox7.Text;
                r["OperationStete"] = trade.comboBox6.Text;

                if (!isRewriteRecord) cennye_bumagiDataSet.Tables["Trades"].Rows.Add(r);

                r.AcceptChanges();
                dataGridView1.Update();
              tradesTableAdapter.Update(cennye_bumagiDataSet);               
  

PM   Вверх
informatik
Дата 20.5.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

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



С базой Access при работе через мастер есть проблемка...
Примерно выглядит это так:

Кагда создается подключение мастер запрашивает копировать файл БД или нет. Если сказать да то файл копируется в папку проекта и строка подключения имеет путь именно к этому файлу и.....
если запускать Debug то данный файл БД копируется в папку проги, но работа то идет именно с тем файлом который находится в паке проекта т.к. строка поключения имеет именно такой путь.. Если физически запустить экзешник, т.е. добраться до папки Debug или Release то попробовав поработать все будет нормально, но при перекомпиляции файл БД заменится файлом БД который лежит в папке проекта, а он пустой... 


что то типа того....
--------------------
namespace informatik
PM MAIL   Вверх
stashe
Дата 21.5.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не, не оно, пробовал. К тому же я даже не перезапуская программу вижу что изменения не сохраняются, закрывая и открывая заново только таблицу а не программу.
PM   Вверх
stashe
Дата 24.5.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Up!
PM   Вверх
stashe
Дата 28.5.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Неужто никто не сталкивался?? smile  диплом пропадает 
PM   Вверх
Magnifico
Дата 28.5.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

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



вероятно  для адаптера InsertCommand DeleteCommand не сгенерирован или сгенерирован неправильно 

попрбуй так
Код

OleDbCommandBuilder bldr = new OleDbCommandBuilder(tradesTableAdapter);
tradesTableAdapter.Update(cennye_bumagiDataSet); 



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
stashe
Дата 30.5.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Magnifico, спасибо большое, позже попробую,....люди, даже если кто-то не знает, высказывайте предположения, буду пробовать все варианты, т.к. и понятия не имею в чем может быть проблема, с БД не работал никогда в жизни
Спсибо за участие! smile 
PM   Вверх
-Mikle-
Дата 31.5.2008, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



по добавлению:
Код

.........................
                r["Amount"] = trade.numericUpDown8.Value;
                r["Currency"] = trade.comboBox7.Text;
                r["OperationStete"] = trade.comboBox6.Text;

                if (!isRewriteRecord) cennye_bumagiDataSet.Tables["Trades"].Rows.Add(r);

                r.AcceptChanges(); // !!! убери вот эту строчку !!!
....................................


по удалению:
Код

// так нельзя удалять
cennye_bumagiDataSet.Tables["Trades"].Rows.RemoveAt(dataGridView1.CurrentRow.Index);
// вот так надо:
cennye_bumagiDataSet.Tables["Trades"].Rows[dataGridView1.CurrentRow.Index].Delete();


А еще имей ввиду, что для каждой таблицы находящейся в DataSet нужно использовать родной TableAdapter. Когда ты передаешь DataSet в TableAdapter.Update, то записывается не весь DataSet, а только та таблица из DataSet, о которой знает конкретный TableAdapter. Другими словами, если в датасете лежит три таблицы, то нужно вызвать три метода Update  у соответствующих TableAdapter.


Пробуй, если что пиши.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
mindyourmind
Дата 1.6.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.6.2008
Где: Киев

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



Аналогичная проблема! Пытаюсь сделать просто через ExecuteNonQuery, база сама не в папке проекта... Селект делается, инсерт - нет smile 
1 из вариантов кода (кажется, подобное предлагали):

 string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FashionShop.mdb";
            OleDbConnection conn = new OleDbConnection(connectionString);
            conn.Open();
            using (OleDbTransaction trans = conn.BeginTransaction())
            {
                try
                {
                    string sql1 = "INSERT INTO Чек (Номер_дисконту) Values (4);";
                    OleDbCommand command1 = new OleDbCommand(sql1, conn, trans);
                    command1.ExecuteNonQuery();
                    string sql2 = "INSERT INTO Чек (Номер_дисконту) Values (5);";
                    OleDbCommand command2 = new OleDbCommand(sql2, conn, trans);
                    command2.ExecuteNonQuery();
                    
                    trans.Commit();
                }
                catch (OleDbException e1)
                {
                    trans.Rollback();
                }
            }
            conn.Close();


PM MAIL ICQ   Вверх
stashe
Дата 6.6.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



-Mikle- , по поводу добавления помогло, работает )))))))))) по удалению эксепшн на нулл, разберусь.
можешь объяснить почему так? писал с букваря и довольно авторитетного (C# для професионалов 2005). Спасибо за помощь!

Добавлено @ 19:40
Добавление работает, а вот изменение нет(т.е. не добавляю новую, а изменяю текущую)..... "Update requires a valid UpdateCommand when passed DataRow collection with modified rows."

Добавлено @ 19:41
Код

            if (!isRewriteRecord) r = cennye_bumagiDataSet.Tables["Requests"].NewRow();
            else r = cennye_bumagiDataSet.Tables["Requests"].Rows[dataGridView2.CurrentRow.Index];

           //     zayavki.KodZayavkiTextBox.Text = "43";
               

                r["ID"] = zayavki.KodZayavkiTextBox.Text;
                r["RegDate"] = zayavki.dateTimePicker1.Value;
                r["Client"] = zayavki.ClientComboBox.Text;
                r["Account"] = zayavki.AccountComboBox.Text;
                r["ClientCode"] = zayavki.RekviziiTextBox.Text;
                r["OperationState"] = operationState;
                r["TradeBase"] = zayavki.TradeStateComboBox.Text;
                r["Value1"] = zayavki.Value1ComboBox.Text;
                r["Value2"] = zayavki.Value2ComboBox.Text;
                r["NumberOfValue"] = zayavki.NumberOfValuesNumericUpDown.Value;
                r["Cost"] = zayavki.CostNumericUPDown.Value;
                r["CurrencyAmoutnn"] = zayavki.CurrencyComboBox.Text;
                r["Commision"] = zayavki.ComissionTextBox.Text;
                r["DayCode"] = zayavki.DayCodeComboBox.Text;
                r["State"] = zayavki.StateComboBox.Text;
                r["Amount"] = zayavki.NumericUpDown14.Value;

                if (!isRewriteRecord)  cennye_bumagiDataSet.Tables["Requests"].Rows.Add(r);

                     dataGridView2.Update();
                    requestsTableAdapter.Update(cennye_bumagiDataSet);         // здесь эксепшн


Это сообщение отредактировал(а) stashe - 6.6.2008, 20:06
PM   Вверх
stashe
Дата 6.6.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



При удалении 
Код

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            cennye_bumagiDataSet.Tables["Requests"].Rows[dataGridView2.CurrentRow.Index].Delete();
            requestsTableAdapter.Update(cennye_bumagiDataSet); // здесь
        }


Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.

если без второй сторки то изменения не записываются

Добавлено через 8 минут и 24 секунды
Magnifico, в твоем примере неверные аргументы в первой строчке
Error    14    The best overloaded method match for 'System.Data.OleDb.OleDbCommandBuilder.OleDbCommandBuilder(System.Data.OleDb.OleDbDataAdapter)' has some invalid arguments 
у меня TableAdapter

Это сообщение отредактировал(а) stashe - 6.6.2008, 19:59
PM   Вверх
stashe
Дата 7.6.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Решил вроде, теперь проблема в редактировании существующей строки...
     
Код

   if (!isRewriteRecord) r = cennye_bumagiDataSet.Tables["Requests"].NewRow();
            else r = cennye_bumagiDataSet.Tables["Requests"].Rows[dataGridView2.CurrentRow.Index];

           //     zayavki.KodZayavkiTextBox.Text = "43";
               

                r["ID"] = zayavki.KodZayavkiTextBox.Text;
                r["RegDate"] = zayavki.dateTimePicker1.Value;
                r["Client"] = zayavki.ClientComboBox.Text;
                r["Account"] = zayavki.AccountComboBox.Text;
                r["ClientCode"] = zayavki.RekviziiTextBox.Text;
                r["OperationState"] = operationState;
                r["TradeBase"] = zayavki.TradeStateComboBox.Text;
                r["Value1"] = zayavki.Value1ComboBox.Text;
                r["Value2"] = zayavki.Value2ComboBox.Text;
                r["NumberOfValue"] = zayavki.NumberOfValuesNumericUpDown.Value;
                r["Cost"] = zayavki.CostNumericUPDown.Value;
                r["CurrencyAmoutnn"] = zayavki.CurrencyComboBox.Text;
                r["Commision"] = zayavki.ComissionTextBox.Text;
                r["DayCode"] = zayavki.DayCodeComboBox.Text;
                r["State"] = zayavki.StateComboBox.Text;
                r["Amount"] = zayavki.NumericUpDown14.Value;

                  if (!isRewriteRecord)  cennye_bumagiDataSet.Tables["Requests"].Rows.Add(r);

                 requestsTableAdapter.Update(cennye_bumagiDataSet); 


т.е. если r = cennye_bumagiDataSet.Tables["Requests"].NewRow(); то Update работает, если 
r = cennye_bumagiDataSet.Tables["Requests"].Rows[dataGridView2.CurrentRow.Index] матюгаетяся на Command text was not set for the command object.



Это сообщение отредактировал(а) stashe - 8.6.2008, 13:01
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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