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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обновить запись (желательно через запрос). 
V
    Опции темы
Fighter
Дата 8.7.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не получается обновить запись через диалоговое окно. Вот исходник:

Код

            if (dds.Disks.Rows.Count > 0)
            {
                AddDiskForm addForm = new AddDiskForm();
                int RecPos = this.BindingContext[dds, "Disks"].Position;
                addForm.textBox1.Text = dds.Disks[RecPos].Disc_Name;
                addForm.textBox2.Text = dds.Disks[RecPos].Disc_Have;
                addForm.textBox3.Text = dds.Disks[RecPos].Disc_Type;
                DialogResult dr = addForm.ShowDialog();
                if (dr == DialogResult.OK)
                {
                    dds.Disks[RecPos].Disc_Name = addForm.textBox1.Text;
                    dds.Disks[RecPos].Disc_Have = addForm.textBox2.Text;
                    dds.Disks[RecPos].Disc_Type = addForm.textBox3.Text;
                    SQLCommand.CommandText = "UPDATE    Disks" + Convert.ToChar(13);
                    SQLCommand.CommandText += " SET Disc_Name = " + "'" + dds.Disks[RecPos].Disc_Name + "'" + ", " + Convert.ToChar(13);
                    SQLCommand.CommandText += "Disc_Have = " + "'" + dds.Disks[RecPos].Disc_Have + "'" + "," + Convert.ToChar(13);
                    SQLCommand.CommandText += "Disc_Type = " + "'" + dds.Disks[RecPos].Disc_Type + "' " + Convert.ToChar(13);
                    SQLCommand.CommandText += "WHERE Disc_ID = " + dds.Disks[RecPos].Disc_ID;
                    MessageBox.Show(SQLCommand.CommandText);
                    oleDbConnection2.Open();
                    SQLCommand.ExecuteNonQuery();
                    DataTable dtAdded = dds.Disks.GetChanges(DataRowState.Modified);
                    if (dtAdded != null)
                    {
                        Discs.Update(dtAdded);
                        dtAdded.Dispose();
                    }
                    dds.AcceptChanges();
                    oleDbConnection2.Close();
                }
            }


Ну, тут можно догадаться что и зачем. В двух словах: Таблица с дисками (Имя, Наличие, Тип диска). Нужно через диалоговое окно обновлять записи. 
Я на C# пробую после Delphi и поэтому я привык все делать через запросы, если можно, покажите как чисто через запрос (ну, в примере есть что-то очень похожее но нерабочее). Если есть еще какие-то варианты, то тоже желательно покажите эти варианты. Спасибо заранее.
PM MAIL   Вверх
Idsa
Дата 8.7.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Fighter, укажи, какой именно кусок кода работает неправильно и вариант чего именно ты хочешь узнать?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Fighter
Дата 8.7.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

DataTable dtAdded = dds.Disks.GetChanges(DataRowState.Added);


Хмм, странно конечно, но вот с этой строчкой работает. 
PM MAIL   Вверх
Idsa
Дата 8.7.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А что именно пишет?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Fighter
Дата 8.7.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну если интересно то пишет он:

An unhandled exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll

Additional information: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.

Это когда строчка:

Код

                    DataTable dtAdded = dds.Disks.GetChanges(DataRowState.Modified);


Стоит её заменить:

Код

                    DataTable dtAdded = dds.Disks.GetChanges(DataRowState.Added);


этой строчкой и все пашет нормально. 
PM MAIL   Вверх
Idsa
Дата 8.7.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Fighter, ну так эти 2 строчки выполняет абсолютно разные операции. И это не может быть причиной ошибки.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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