С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/36: Рейтинг темы: голосов - 36, средняя оценка - 4.61
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
1

[C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid

22.04.2012, 15:29. Просмотров 6639. Ответов 17
Метки нет (Все метки)

Здравствуйте!

Возможно тема заезженная, но не чего путнего не нашел(может так искал!)

Нужна помощь в добавлении и изменении данных в таблице БД mysql через DBGrid.

На форме есть:
  1. TSQLConnection
  2. SQLQuery
  3. SQLTable
  4. SimpleDataSet
  5. DataSource

C удаление выбраной строки разобрался:

C++
1
2
3
4
5
6
7
8
nt i = DBGrid1->Fields[0]->Value;//узнаем ID строки
    SimpleDataSet1->Active = false;
    SQLQuery1->SQL->Clear();
           SQLQuery1->SQL->Add("DELETE FROM lecturers WHERE ID_Lectures = '" + IntToStr(i) + "'");
    SQLQuery1->ExecSQL();
    SQLTable2->Active = false;
    SQLTable2->Active = true;
    SimpleDataSet1->Active = true;

Как добавить новую строку в конец DBGrid и соответсвенно заполнив ее она добавится в саму таблицу БД.

Тоже самое косается и изменением данных в строке, изменяешь в гриде изменяется в самой таблице БД!

Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 15:29
Ответы с готовыми решениями:

Удаление, изменение, добавление строк в DBGrid
Всем здравствуйте!!! Помогите разобраться Дано: Форма с DBGrid которая...

Удаление записей через DBGrid
Здраствуйте ! Расскажите пожалуйста как программно удалить выделенные записи в...

Добавление и удаление полей из базы в dbgrid который будет служить фильтром поиска
есть на форме TDBLookupComboBox, dbgrid, и 3-и кнопки(ADD, DEL и ОК). Список...

Cкопировать базу SQL через DBGrid в StringGrid. Ошибка памяти (Builder 2006)
Необходимо скопировать базу SQL через DBGrid в StringGrid. for...

Добавление записи в DBGrid и получение записи в DBGrid Другой формы
К проекту подключена Access .mdb БД. Имеется 2 формы. На обоих формах есть...

17
DirtyBASS
8 / 8 / 1
Регистрация: 14.09.2009
Сообщений: 59
22.04.2012, 15:35 2
DBNavigator юзали?
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 15:44  [ТС] 3
Цитата Сообщение от DirtyBASS Посмотреть сообщение
DBNavigator юзали?
Нет, пару примеров работы с ним можете привести, что косается моего вопроса!
0
DirtyBASS
8 / 8 / 1
Регистрация: 14.09.2009
Сообщений: 59
22.04.2012, 15:46 4
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Нет, пару примеров работы с ним можете привести, что косается моего вопроса!
а какие могут быть примеры... привязываете его к DataSource в свойствах и пользуетесь. Добавление, удаление, редактирование записей возможно с помощью него.
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 15:50  [ТС] 5
Цитата Сообщение от DirtyBASS Посмотреть сообщение
а какие могут быть примеры... привязываете его к DataSource в свойствах и пользуетесь. Добавление, удаление, редактирование записей возможно с помощью него.
Я не спорю! ну так добаляется/удаляется только со DBGrid! что не есть хорошо!

Должно удаляться/добавляться из самой БД!

ТО есть Добавили в DBGrid, добавилось и в самой таблице БД!
0
DirtyBASS
8 / 8 / 1
Регистрация: 14.09.2009
Сообщений: 59
22.04.2012, 16:00 6
Infinity3000, а Вы эту кнопку нажимаете после всех манипуляций?
1
Изображения
 
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 16:08  [ТС] 7
Цитата Сообщение от DirtyBASS Посмотреть сообщение
Infinity3000, а Вы эту кнопку нажимаете после всех манипуляций?
Ну конечно!

С самой БД данные не удаляются!
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
22.04.2012, 17:22 8
Можно по пробовать добавить строку через DataSource c использованием метода Append
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 17:31  [ТС] 9
Цитата Сообщение от Sasha Посмотреть сообщение
Можно по пробовать добавить строку через DataSource c использованием метода Append
Саму строку со значение, например, ключа я добавлею так!

C++
1
2
3
4
5
6
7
    SimpleDataSet1->Active = false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("INSERT INTO `disciplines`  (`ID_Disciplines`) VALUES ('54')");
    SQLQuery1->ExecSQL();
    SQLTable2->Active = false;
    SQLTable2->Active = true;
    SimpleDataSet1->Active = true;
Строка удачно добовляется и в базе и в Гриде!

Но теперь нужно заполнить все остальные столбцы вручную определенными значениями, вот они после заполнения и не отображаются в БД, то есть строка остается пустой, ну только со значение ключа!

Добавлено через 2 минуты
Хочу добится набодобии такого!

Нажал на кнопку строка добавилась в БД и в Гриде, ее заполнили, нажали энтер или другую кнопку для подтверждения и она полностью со всеми полями и значения одобразилась(занеслась в базу).
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
22.04.2012, 17:37 10
Не понял ты же говорил, что тебе надо строку вниз добавить? Как ты столбцы заполняешь вручную?

Добавлено через 4 минуты
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Нажал на кнопку строка добавилась в БД и в Гриде, ее заполнили, нажали энтер или другую кнопку для подтверждения и она полностью со всеми полями и значения одобразилась(занеслась в базу).
Зачем огороды городить? Сначала пустую строку вносить потом её заполнять? Ты уже если заносишь строку так ты заноси заполненную
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 17:45  [ТС] 11
Цитата Сообщение от Sasha Посмотреть сообщение
Не понял ты же говорил, что тебе надо строку вниз добавить?
Так оно и есть(см. вложение 1)

C++
1
2
3
4
5
6
7
SimpleDataSet1->Active = false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("INSERT INTO `disciplines`  (`ID_Disciplines`) VALUES ('33')");
    SQLQuery1->ExecSQL();
    SQLTable2->Active = false;
    SQLTable2->Active = true;
    SimpleDataSet1->Active = true;

Цитата Сообщение от Sasha Посмотреть сообщение
Как ты столбцы заполняешь вручную?
(см. вложения 2)


Зачем огороды городить? Сначала пустую строку вносить потом её заполнять? Ты уже если заносишь строку так ты заноси заполненную
С этим я как то и хочу разобраться!


После того как я ввел все данные необходимо их отобразить в самой БД
0
Миниатюры
[C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid   [C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid  
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
22.04.2012, 18:30 12
В твоём положении можно сделать так

На кнопку пишешь такое

C++
1
SQLQuery1->Append()
После того как ты заполнишь грид вручную и нажимая клавишу Ентер

далее последует код

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::DBGrid1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if (Key == VK_RETURN)
    {
      SQLQuery1->Post();
    }
}
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 20:38  [ТС] 13
Спасибо, появляется такая ошибка, Все препробывал, не получается исправить!

ReadOnly ставил в true и тд и тп!

В чем проблема не подскажите!
0
Миниатюры
[C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid  
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
22.04.2012, 20:47 14
А ты в гриде Editing в true поставил?
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 21:49  [ТС] 15
Цитата Сообщение от Sasha Посмотреть сообщение
А ты в гриде Editing в true поставил?
Да, он по умолчанию стоит в true!

Не понятно вообще из за чего происходит. Если есть еще варианты исправить, подскажите!
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,482
Записей в блоге: 3
22.04.2012, 22:47 16
C++
1
RequestLive = true
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.04.2012, 23:05  [ТС] 17
А что это вообще за свойство?

Добавлено через 1 минуту
И вообще не понятно! почему удаление строки реализовано и работает и не чего не мешает, все в норме удаляет, а вот с добавлением какие то чудеса происходят??
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
02.05.2012, 15:06  [ТС] 18
добавление в БД mysql через DBGrid

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
    SimpleDataSet1->Active = false;
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("INSERT INTO `discipline_teachers`  (`Призвище`, `Ім" + String("'") + "я`,`По батькові`,"
                                            "`Назва дисципліни`) VALUES ('"
                                            + DBGrid1->Fields[1]->AsString + "','"
                                            + DBGrid1->Fields[2]->AsString + "','"
                                            + DBGrid1->Fields[3]->AsString + "','"
                                            + Form1->DBGrid3->Fields[0]->AsString + "' )");
    SQLQuery1->ExecSQL();
    SQLTable1->Active = false;
    SQLTable1->Active = true;
    SimpleDataSet1->Active = true;
Может кому то тоже такой вариант подойдет!
0
02.05.2012, 15:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2012, 15:06

Вывод из DBGRID в WORD Builder C++
Вопрос заюзанный но, как зафиксировать поле в grid и вывести его в Word

Печать таблицы из компонента DBGrid в C++Builder
Как мне вывести на печать данные из DBGrid? Сложность состоит в том что нужно...

Отображение из DBGrid информации на Webbrowser C++ Builder
Отображение из DBGrid информации на Webbrowser C++ Builder. Тема курсовой БД...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru