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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование записей через datagridview, Некорректно работает редактирование 
:(
    Опции темы
Maza122
Дата 6.11.2015, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Помогите пожалуйста доработать программу.
У меня имеется форма. На ней datagridview, кнопки: "Сохранить изменения", "Поиск" и др. В datagridview отображаются данные из базы acceess.
На начальном этапе, когда форма загружается, я могу менять записи в datagridview, и, по нажатию кнопки "сохранить изменения", записи меняются в БД. Далее, в поле поиска я ввожу фамилию и имя, и, по нажатию кнопки "Поиск" , соответствующие записи отображаются. 
Вот при загрузке формы:
Код

private void Man_Load(object sender, EventArgs e)
        {
            da = new OleDbDataAdapter("Select * From [TPersons]", new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.15.0;Data Source=C:\Users\Use\Documents\Visual Studio 2012\Projects\АСОИУ\Database.accdb;Persist Security Info=False"));
            OleDbCommandBuilder bulder = new OleDbCommandBuilder(da);
            da.UpdateCommand = bulder.GetUpdateCommand();
            da.Fill(НаборДанных);
            dataGridView1.DataSource = НаборДанных.Tables[0];
        //    dataGridView1.AllowUserToAddRows = false;
            
        }
 
    }


Вот кнопка "Сохранить изменения
Код

private void button5_Click(object sender, EventArgs e)
        {
 
           
               da.Update(НаборДанных.Tables[0]);
               MessageBox.Show("Данные обновлены");
 
            
 
        }     


Вот кнопка "поиск"

Код

private void button3_Click(object sender, EventArgs e)
        {
            string Poisk, Poisk1, query;
            Poisk = txtpoisk.Text;
            Poisk1 = txtpoisk1.Text;
            ConnectTo1();
            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            if (txtpoisk1.Text == "")
                query = "Delete * from TPersons where Фамилия = '" + Poisk + "' ";
            else if (txtpoisk.Text == "")
                query = "Delete * from TPersons where Имя ='" + Poisk1 + "'  ";
            else
                query = "Delete * from TPersons where Фамилия = '" + Poisk + "' AND Имя = '" + Poisk1 + "' ";
                    MessageBox.Show("Запись удалена. Для просмотра изменений нажмите кнопку 'Обновить'");
                   
                    command.CommandText = query;
                    OleDbDataAdapter da = new OleDbDataAdapter(command);
                    DataTable dt = new DataTable();
                    da.Fill(dt);                                                                               
                connection.Close();
                dataGridView1.Columns.Clear();         
        }

У меня два вопроса:
1) При попытке повторного изменения данных, записи не сохраняются. Приходится закрывать и открывать форму. Как исправить?
2) Как сделать так, чтобы после поиска, я также мог редактировать записи?
Для удобства, прилагаю проект.
Очень прошу о помощи. Помогите разобраться. 

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  АСОИУ__1_.rar 211,42 Kb
PM MAIL   Вверх
chupachups
Дата 8.11.2015, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

   query = "Delete * from TPersons where Фамилия =
   

Это ТАК вас учат делать поиск данных ???

Код обработчика button3_Click вообще никакой логикой не объясняется:
1) если предположить, что вышеуказанный косяк просто опечатка, то поисковые данные надо заливать в тот же набор данных, который участвует в обработчике сохранения - НаборДанных.Tables[0].Clear(); da.Fill(НаборДанных.Tables[0]);
но для этого необходимо чтобы da из обработчика button5_Click был объектом класса формы (т.к. в button3_Click есть свой da)
2) зачем в конце удаляются все колонки в гриде - dataGridView1.Columns.Clear() ?
3) и вообще непонятно как отображаются найденные строки, если грид подвязан на НаборДанных.Tables[0], а заливка найденных производится в dt?

Я думаю, что программа всегда будет корректно работать (за исключением  опечаток по невнимательности), если кодописатель будет хотя бы читать свой собственный код, я уж не говорю о его отработке в голове.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
oloko900
Дата 11.2.2018, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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