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

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

04.06.2020, 14:43. Показов 3472. Ответов 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
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 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
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2020, 12:20
эммм?? это новый синтаксис SQL?
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
07.06.2020, 13:39
Это же MySQL, а там имя таблицы, да еще в таких дурацких кавычках всегда писалось. Последние версии вроде как уходят от этого тупизма, например WorkBench уже позволяет нормально писать SQL скрипты.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2020, 15:33
я про то куда делось FROM

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

скорее всего, автор что-то недоговаривает
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
07.06.2020, 15:36
Упс... потерялся. Косячокс
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2020, 15:36
почему-то я подумал, что он просто не перечитал данные из базы после удаления
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 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
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 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
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
08.06.2020, 19:09
Так тоже будет работать, но для подобных выкрутасов лучше использовать компонент TAdoStoredProc
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 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
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru