Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 15.07.2018, 08:18   #1
rustorkan
Форумчанин
 
Регистрация: 07.06.2017
Сообщений: 50
Репутация: 10
По умолчанию Ссылка на объект не указывает на экземпляр объекта.

Код:

Abon_Form F = new Abon_Form();

SqlCommand com = new SqlCommand("UPDATE [АБОНЕНТЫ] SET [ПриложениеАбонента] = @ПриложениеАбонента, [Фамилия] = @Фамилия, [Имя] = @Имя, [Отчество] = @Отчество, [Адрес] = @Адрес WHERE [ПриложениеАбонента] = '" + F.dataGridabon[0, F.dataGridabon.CurrentCell.RowIndex].Value + "'", con);

com.Parameters.AddWithValue("@ПриложениеАбонента", Convert.ToInt32(textBox1.Text));

com.Parameters.AddWithValue("@Фамилия", textBox_familia.Text);

com.Parameters.AddWithValue("@Имя", textBox_imja.Text);

com.Parameters.AddWithValue("@Отчество", textBox_otchestvo.Text);

com.Parameters.AddWithValue("@Адрес", textBox_adres.Text);

rustorkan вне форума   Ответить с цитированием
Старый 15.07.2018, 08:30   #2
rustorkan
Форумчанин
 
Регистрация: 07.06.2017
Сообщений: 50
Репутация: 10
По умолчанию

Ошибка в этой строке.
Код:

SqlCommand com = new SqlCommand("UPDATE [АБОНЕНТЫ] SET [ПриложениеАбонента] = @ПриложениеАбонента, [Фамилия] = @Фамилия, [Имя] = @Имя, [Отчество] = @Отчество, [Адрес] = @Адрес WHERE [ПриложениеАбонента] = '" + F.dataGridabon[0, F.dataGridabon.CurrentCell.RowIndex].Value + "'", con);

rustorkan вне форума   Ответить с цитированием
Старый 15.07.2018, 08:37   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,982
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Потому что надо не новую форму создавать, а использовать существующую.

И давать всему нормальные имена в одном стиле, а не рождать Гридабонов.
Alex11223 на форуме   Ответить с цитированием
Старый 15.07.2018, 09:10   #4
rustorkan
Форумчанин
 
Регистрация: 07.06.2017
Сообщений: 50
Репутация: 10
По умолчанию

Alex11223, dataGridview и TextBox, с которых вносятся изменения располагаются на разных формах.
В DataGridAbon содержатся данные об абонентах, отсюда и название.
rustorkan вне форума   Ответить с цитированием
Старый 21.07.2018, 00:46   #5
rustorkan
Форумчанин
 
Регистрация: 07.06.2017
Сообщений: 50
Репутация: 10
По умолчанию

Такой запрос не работает.
Ошибок не выдает, но таблица не обновляется.

Код:

SqlCommand com = NEW SqlCommand("UPDATE [АБОНЕНТЫ] SET [НомерРазговора] = @НомерРазговора, [ДатаРазговора] = @ДатаРазговора, [Время] = @Время, [Стоимость] = @Стоимость WHERE [НомерРазговора] = '" + F.Разговоры_dataGrid[0, F.Разговоры_dataGrid.CurrentCell.RowIndex].Value + "' AND [ДатаРазговора] = '" + F.Разговоры_dataGrid[5, F.Разговоры_dataGrid.CurrentCell.RowIndex].Value + "' AND [Время] = '" + F.Разговоры_dataGrid[6, F.Разговоры_dataGrid.CurrentCell.RowIndex].Value + "' AND [Стоимость] = '" + F.Разговоры_dataGrid[7, F.Разговоры_dataGrid.CurrentCell.RowIndex].Value + "'", con);
 
com.Parameters.AddWithValue("@НомерРазговора", CONVERT.ToInt32(Номер_разговора_textBox.Text));
 
com.Parameters.AddWithValue("@ДатаРазговора", CONVERT.ToDateTime(Дата_разговора_textBox.Text));
 
com.Parameters.AddWithValue("@Время", CONVERT.ToInt32(Продолжительность_textBox.Text));
 
com.Parameters.AddWithValue("@Стоимость", CONVERT.ToInt32(Стоимость_разговора_textBox.Text));
 
com.ExecuteNonQuery();

Изображения
Тип файла: png 1.png (18.0 Кб, 1 просмотров)
rustorkan вне форума   Ответить с цитированием
Старый 23.07.2018, 12:18   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,334
Репутация: 5274
По умолчанию

1) там, где Вы используете подставляемые значения в условиях запроса (см. WHERE )
нужно тоже использовать параметры.

2) типы данных дата, время и их комбинации (time, date, datetime) не должны передаваться в виде строки. Никогда. Это путь к багам и косякам.

3) для обновления данных, если это позволяют условия задачи, желательно использовать ключевое поле в WHERE
Правда, в данном случае, Номер разговора меняется запросом, поэтому вряд ли он может быть ключевым полем.
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на объект не указывает на экземпляр объекта. endorphin96 Помощь студентам 0 02.06.2015 18:10
ссылка на объект не указывает на экземпляр объекта kalipta C# (си шарп) 1 16.12.2014 15:58
ссылка на объект не указывает на экземпляр объекта aliqulu C# (си шарп) 3 16.03.2014 12:17
ссылка на объект не указывает на экземпляр объекта miarida C# (си шарп) 3 27.05.2013 08:28
Ссылка на объект не указывает на экземпляр объекта. Kazbek17 C# (си шарп) 11 08.02.2012 18:56


10:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru