Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13

Удаление записей через DBGrid

28.05.2012, 15:13. Показов 3158. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте ! Расскажите пожалуйста как программно удалить выделенные записи в DbGrid через query ??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2012, 15:13
Ответы с готовыми решениями:

[C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid
Здравствуйте! Возможно тема заезженная, но не чего путнего не нашел(может так искал!) Нужна помощь в добавлении и изменении...

Как выделить несколько записей из DBGrid через ctrl или shift
Как выделить несколько записей из DBGrid через ctrl или shift и сформировать отчет по выбранным записям для Fastreport с++ Rad studio 10.2 ...

Добавление записей в DBGrid
У меня на одной форме расположен DBGrid а на другой форме находятся Edit'ы для добавления записи в DBGrid. Помогите пожалуйста написать...

13
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 15:19
muwa_dobry, искать информацию пробовали?
0
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
28.05.2012, 15:24  [ТС]
ДА..там только одну удалеят выделенную..а если несколько выделить,то удаляет первую ...
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 15:35
muwa_dobry, понял. Пишу навскидку, так что может что упустил:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (DBGrid1->SelectedRows->Count > 0) {
 
    TDataSet *pDS = DBGrid1->DataSource->DataSet;
 
    for (int i=0; i < DBGrid1->SelectedRows->Count; i++)  {
 
      pDS->GotoBookmark(DBGrid1->SelectedRows->Items[i]);
      ADOQuery2->Close();
      ADOQuery2->SQL->Clear();
      ADOQuery2->SQL->Add("DELETE FROM table_name WHERE ID =" + pDS->Fields->Fields[0]->AsString); //предполагается, что в первом столбике сидит идентификатор
      ADOQuery2->Open();
      }
 
    }
 
      ADOQuery1->Close(); //обновляем ДБГрид
      ADOQuery1->Open();
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.05.2012, 15:48
Цитата Сообщение от The_Immortal Посмотреть сообщение
ADOQuery2->Open();
А не ExecSQL случаем?
0
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
28.05.2012, 15:49  [ТС]
The_Immortal, вылетает такая ошибка list index out of bounds (0) ......
Я вот так удаляю адну запись
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
void __fastcall Tglavnauy::Button1Click(TObject *Sender)
{
 
    if(DM1->UniQuery3->RecordCount !=0)
     {
         AnsiString ds = "Вы деиствительно хотите удалить выбранную строку? \n\n";
     if (    MessageDlg(ds.c_str(),mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0) ==IDNO)
     {
         Abort();
     }
     else
 
 
      if( DBGrid1->SelectedRows->Count > 0)
     {
         //DM1->UniQuery3->DisableControls();
         int curItem = DM1->UniQuery3->RecNo;
         DM1->UniQuery3->First();
         while(!DM1->UniQuery3->Eof)
         {
     if(DBGrid1->SelectedRows->CurrentRowSelected)
     {
      int CurrentRecord;
     CurrentRecord = StrToInt(DBGrid1->SelectedField->Text);
     Memo1->Lines->Add(DBGrid1->SelectedField->Text);
       DM1->UniQuery3->Close();
     DM1->UniQuery3->SQL->Clear();
    DM1->UniQuery3->SQL->Add("delete avto.*,deklarant.*,glava.* from avto,deklarant,glava  ");
    DM1->UniQuery3->SQL->Add(" where glava.id = avto.id2 and (glava.id =:Value_id) and  glava.id=deklarant.id2 ");
        DM1->UniQuery3->Parameters->ParamByName("Value_id")->Value = CurrentRecord; //CurrentRecord содержит уникальный идентификатор текущей записи
        DM1->UniQuery3->ExecSQL();
     DM1->UniQuery3->Close();
     DM1->UniQuery3->SQL->Clear();
      DM1->UniQuery3->SQL->Add("select * from glava") ;
      DM1->UniQuery3->Open();
     }
    else
     {
         DM1->UniQuery3->Next();
     }
 
          }
        DBGrid1->SelectedRows->Clear();
        if(DM1->UniQuery3->RecordCount > 0)
     {
        if(curItem > DM1->UniQuery3->RecordCount)
     {
        DM1->UniQuery3->Last();
     }
    else
    {
        DM1->UniQuery3->RecNo = curItem;
        DBGrid1->SelectedRows->CurrentRowSelected = true;
    }
   }
  // DM1->UniQuery3->EnableControls();
        }
   } }
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.05.2012, 15:49
Я вообще стараюсь исбегать циклов с запросами
0
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
28.05.2012, 15:51  [ТС]
Sasha, а как легче сделать ....а то у меня должно сразу с 3 таблиц удалиться выделенные записи ?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 15:58
Sasha,
Цитата Сообщение от Sasha Посмотреть сообщение
А не ExecSQL случаем?
Цитата Сообщение от The_Immortal Посмотреть сообщение
Пишу навскидку, так что может что упустил:

Цитата Сообщение от muwa_dobry Посмотреть сообщение
Sasha, а как легче сделать
Да, а как же легче сделать, Sasha?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.05.2012, 15:58
Цитата Сообщение от muwa_dobry Посмотреть сообщение
Sasha, а как легче сделать ....а то у меня должно сразу с 3 таблиц удалиться выделенные записи ?
Где ты взял этот код?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 16:00
muwa_dobry, чего-то Вы перемудрили...
0
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
28.05.2012, 16:04  [ТС]
Sasha, ты выкладывал на этом форуме..на другом форуме кто другой !

Добавлено через 1 минуту
Sasha, да это у меня по курсачу такая база...а код удаления ты выкладывал на форуме !

Добавлено через 2 минуты
я сейчас не смогу переписываться...мне на пары ити нада )ток вечером...придумайте пожалуйста что нибудь ?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 16:12
muwa_dobry, лучше бы проект выложили...
0
0 / 0 / 0
Регистрация: 26.04.2012
Сообщений: 13
28.05.2012, 21:05  [ТС]
The_Immortal, да уже не надо...я потому способу сделал ,что выкладывали вы)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2012, 21:05
Помогаю со студенческими работами здесь

Редактирование записей в DBGrid
Вечер добрый. Необходимо организовать редактирование записей в таблице Access подключенную через DBGrid ADOTable &amp; DataSource. А...

Количество записей в DBGrid
Подскажите, как можно посчитать кол-во записей или строк в DBGrid?

Редактирование нескольких записей в DbGrid
Добрый день. Необходимо сделать проверку на совпадение текста в ячейке BDGrid'е и в Edit'е, и если они совпадают заменить в BDGrid'е на...

Обновление и добавление записей в DBGrid
Builder 6, Firebird 2.0. Использую связку DBGrid + Datasource + IBDataSet. При добавлении в грид записи или обновлении записи в ячейке...

DBGrid и цвет селектора записей
Как изменить цвет селектора текущей и вообще выбранных записей в DBGrid ?


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru