Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.06.2020
Сообщений: 12
RAD XE3+

DBGrid Ehlib + SQL - Удаление записи в строке

04.06.2020, 14:43. Показов 3631. Ответов 34

Студворк — интернет-сервис помощи студентам
Добрый чертовый день!
У меня вопрос, кто знает как можно удалить строку в таблице?



 Комментарий модератора 
Неужели проще загружать скриншот на какую-то файлопомойку, чем прямо в тему?


Delphi
1
2
3
4
5
6
7
8
9
10
      procedure TForm.btnDeleteClick(Sender: TObject);
        begin
            begin
                if MessageDlg('Удалить?', mtConfirmation, mbYesNo, 0)=mrYes then
                begin
                  MultiSelectGrid(DBGridEh1, 'delete from p_migrant ');
                  MainFilter(nil);
                end;
            end;
        end;
или взятый от :rtfm: сюда
Delphi
1
2
3
4
5
6
7
8
procedure TForm.N1Click(Sender: TObject);
begin
      if ADOQuery1.RecordCount>0 then
  if (ActiveControl is TDBGridEh) then
    with TDBGridEh(ActiveControl) do
      if CheckDeleteAction and (geaDeleteEh in EditActions) then
        DBGridEh_DoDeleteAction(TDBGridEh(ActiveControl),true);
end;
Какахами можно и нужно кидать!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2020, 14:43
Ответы с готовыми решениями:

Удаление записи из БД DBGrid
ребята, нужно удалить запись из бд с помощью DBGrid. У меня постоянно выскакивает либо ошибка типа "cannot perform this operation on a...

DBGrid - удаление записи из базы
Здравствуйте! У меня такой вопросик, как можно удалить запись из базы? на форме есть компоненты ADOTable, ADOQuery, DataSource,...

Удаление строки из Dbgrid, SQL
Всем доброго времени суток! Помогите пожалуйста кто может. Создал базу данных в Interbase а в ней таблицу следующим образом: Create...

34
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
06.06.2020, 20:31
Лучший ответ Сообщение было отмечено sedoy_bes как решение

Решение

Студворк — интернет-сервис помощи студентам
Delphi
1
SQL.Text:='delete FROM `p_migrant` where id = '+IntToStr(ADOQuery1.FieldByName('id').AsInteger);
Экий выкрутас. Проще так будет:
Delphi
1
SQL.Text:='delete FROM `p_migrant` where id = '+ADOQuery1.FieldByName('id').AsString;
Только это не решение проблемы, а просто замечание. А вот для решения проблемы попробуйте так:
Delphi
1
SQL.Text:='delete `p_migrant` where `p_migrant`.id = '+ADOQuery1.FieldByName('id').AsString;
1
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
07.06.2020, 12:20
эммм?? это новый синтаксис SQL?
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
07.06.2020, 13:39
Это же MySQL, а там имя таблицы, да еще в таких дурацких кавычках всегда писалось. Последние версии вроде как уходят от этого тупизма, например WorkBench уже позволяет нормально писать SQL скрипты.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
07.06.2020, 15:33
я про то куда делось FROM

Добавлено через 3 минуты
кроме того,
если имя идентификатора относится к служебным словам или содержит специальные символы, необходимо всегда заключать его в одиночные кавычки при использовании в выражениях:
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
так что обычная запись вполне валидна даже в mySQL

скорее всего, автор что-то недоговаривает
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
07.06.2020, 15:36
Упс... потерялся. Косячокс
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
07.06.2020, 15:36
почему-то я подумал, что он просто не перечитал данные из базы после удаления
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
07.06.2020, 15:38
У него немножко не так:
SQL
1
SELECT * FROM `select` WHERE id > 100;
Тут id без указания таблицы-владельца MySQL не желает принимать
0
0 / 0 / 0
Регистрация: 04.06.2020
Сообщений: 12
08.06.2020, 15:34  [ТС]
krapotkin, а как обновить таблицу после добавления в базу записи
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
08.06.2020, 15:46
закрыть / открыть
1
0 / 0 / 0
Регистрация: 04.06.2020
Сообщений: 12
08.06.2020, 17:40  [ТС]
krapotkin, Точно!

Добавлено через 1 час 54 минуты
krapotkin,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TPayment.Save;
begin
  with DM.ADOQueryDoc do
    begin
      Close;
      SQL.Text:='call `payment_Save`('+IntToStr(self.iID)+
                                     ', '+IntToStr(self.iStateID)+
                                     ', '''+FormatDate(DateToStr(self.dDatePayment))+
                                     ''', '+IntToStr(self.iCompanyID)+
                                     ', '+IntToStr(self.iIndividualID)+
                                     ', '+CurrToStr(self.cPrice)+
                                     ', '+IntToStr(self.iServiceID)+
                                     ', '''+self.sTypePayment+
                                     ''', '+IntToStr(Integer(self.bDebt))+');';
      Open;
      self.iID:=Fields[0].AsInteger;
      self.iOrdID:=Fields[1].AsInteger;
    end;
end;
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
08.06.2020, 19:09
Так тоже будет работать, но для подобных выкрутасов лучше использовать компонент TAdoStoredProc
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
08.06.2020, 20:22
и лучше использовать параметры, чем пытаться взгромоздить такую конструкцию )
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
09.06.2020, 07:02
krapotkin, у вас в блоге про параметры читал, вы пишите что не стоит подготавливать SQL строку таким образом(собственно, тоже самое что и здесь). А какие негативные последствия от такого способа?
0
0 / 0 / 0
Регистрация: 04.06.2020
Сообщений: 12
09.06.2020, 09:30  [ТС]
Пытливый, так не работает(

Добавлено через 2 часа 24 минуты
Delphi
1
2
    Datasource1.DataSet.Close;
    Datasource1.DataSet.Open;
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
09.06.2020, 10:08
там же написано, почему
во-первых, если можно чего-то не делать, лучше не делать )
во-вторых, серверу не нужно каждый раз заново парсить запрос, к нему прилетают только параметры, и он их использует
в-третьих, не нужно следить в каком формате вы передаете строки, даты, какой десятичный разделитель, сколько апострофов, где просто null.
Все это делается за вас. Это вообще очень прикольно
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2020, 10:08

Удаление записи по нажатию на строку DbGrid
Здравствуйте,нужна помощь с Delphi.Нужно сделать удаление записи по нажатию на строку в dbgrid и чтобы перед удалением запрашивалась...

Как сделать добавление/редактирование/удаление записи в dbgrid?
подскажите, пожалуйста, как сделать добавление/редактирование/удаление записи в dbgrid? проект и базу прикрепляю. и еще такой...

Перемещение по сетке в DbGrid (EhLib)
Есть DbGrid (EhLib). В нём через DataSet отображаются данные с таблицы. Когда DataSet установлен на первую позицию (соответственно курсор в...

Печать DBGrid из компонента EHLib, ошибка
Нужно реализовать печать гридов. Прочитал, что через EHLib это хорошо реализовано. Скачал, установил, но при вызове процедуры печати...

Delphi XE4 SQL запрос. Добавление записи в последнюю позицию DBGrid
Еще раз всем привет! Возникла вот такая загогулина. Есть поле Edit, в котором есть данные. Эти данные надо перенести в таблицу. Но не...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru