Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Код:
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, 07:30   #2
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

Ошибка в этой строке.
Код:
SqlCommand com = new SqlCommand("UPDATE [АБОНЕНТЫ] SET [ПриложениеАбонента] = @ПриложениеАбонента, [Фамилия] = @Фамилия, [Имя] = @Имя, [Отчество] = @Отчество, [Адрес] = @Адрес WHERE [ПриложениеАбонента] = '" + F.dataGridabon[0, F.dataGridabon.CurrentCell.RowIndex].Value + "'", con);
rustorkan вне форума Ответить с цитированием
Старый 15.07.2018, 07:37   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

И давать всему нормальные имена в одном стиле, а не рождать Гридабонов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.07.2018, 08:10   #4
rustorkan
Пользователь
 
Регистрация: 07.06.2017
Сообщений: 53
По умолчанию

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

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

Код:
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 Кб, 138 просмотров)
rustorkan вне форума Ответить с цитированием
Старый 23.07.2018, 11:18   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на объект не указывает на экземпляр объекта. endorphin96 Помощь студентам 0 02.06.2015 17:10
ссылка на объект не указывает на экземпляр объекта kalipta C# (си шарп) 1 16.12.2014 14: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