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

Ошибка при попытки удаления текущей записи

25.05.2016, 21:24. Показов 1351. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подключен бд access через ADO.

Пытаясь удалить текущую запись самым обычным способом
Delphi
1
ADOTovary.Delete;
Получаю ошибку:
---------------------------
Недостаточные сведения о ключевом столбце для обновления.
---------------------------
Подскажите пожалуйста в чём может быть причина? (кроме кривых рук)

Вот всё что написанно в коде кнопки на удаление
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.BtnDelTovClick(Sender: TObject);
begin
{try}
if Application.MessageBox('Удалить текущую записть?','Подтвердите удаление',MB_YESNO)=IDYES then
begin
ADOTovary.Delete;
end;
{except
on e:Exception do
end; }
 
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2016, 21:24
Ответы с готовыми решениями:

Не работает условие на проверку результатов запроса при попытки сохранения записи
При создании задачи в БД, поставил на кнопку "сохранить" проверку на наличие задач с совпадающими параметрами. Саму проверку реализовал с...

Ошибка при попытки закрыть форму! Оо
Привет Ребят) Помогите решить проблему)) Есть главная форма, в ее событии FormShow, пишу вот такой код try version :=...

Ошибка при попытки открытия сохраненного файла
В DATA.TXT находится: stud1,work1,8 марта 2019 г.,2, stud2,work1,8 марта 2019 г.,2, stud3,work1,8 марта 2019 г.,2, stud4,work1,8...

18
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
25.05.2016, 21:45
Ключа в таблице нет (кривые руки разработчика БД)
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
25.05.2016, 22:01  [ТС]
Ключ есть
https://yadi.sk/i/hUfTBGf3rzZqk
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
25.05.2016, 22:06
Цитата Сообщение от daviddraiman Посмотреть сообщение
ADOTovary
Это что такое ?
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
25.05.2016, 22:36  [ТС]
ADOQuery
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.05.2016, 08:17
и что там у него в тексте sql-запроса ?
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
26.05.2016, 15:35  [ТС]
Delphi
1
2
3
  ADOTovary.SQL.Clear;
  ADOTovary.SQL.Add('SELECT Merchen.ID_Merchen, Merchen.Type, Merchen.Firm, Merchen.Model, Colors.Color, Merchen.Price_hour, Merchen.Price_day, Merchen.Price_week, Merchen.Total FROM Merchen, Colors WHERE Merchen.ID_Color = Colors.ID_Color');
  ADOTovary.Active:=True;
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
26.05.2016, 15:47
Цитата Сообщение от daviddraiman Посмотреть сообщение
Пытаясь удалить текущую запись самым обычным способом
У тебя выборка из 2-х таблиц. Что понимается в этом случае под текущей записью (с точки зрения БД)? Нужно удалить строку из таблицы Merchen, из таблицы Colors или из обеих сразу?
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
26.05.2016, 16:02  [ТС]
Нужно только из таблицы Merchen. Как в таком случае нужно сделать удаление?
0
5981 / 4556 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
26.05.2016, 16:04
SQL
1
2
3
4
DELETE t1 
FROM t1 
JOIN t2 ON t1.id=t2.id
WHERE t2=100
как то так
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
26.05.2016, 16:17  [ТС]
Delphi
1
DELETE t1
t1 здесь это что? я так не удалю таблицу?
Delphi
1
WHERE t2=100
а эта строчка зачем? откуда 100 берётся?
Можно попросить подробно расписать? Не понятно что и куда.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.05.2016, 16:20
Сделай отдельный запрос для модификации таблицы Merchen (удаление, добавление, апдейт) и не усложняй жизнь себе и людям)
1
5981 / 4556 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
26.05.2016, 16:20
откройте уже учебник по SQL
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
26.05.2016, 16:23
Цитата Сообщение от daviddraiman Посмотреть сообщение
я так не удалю таблицу?
Таблица удаляется инструкцией DROP
1
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.05.2016, 16:23
Цитата Сообщение от daviddraiman Посмотреть сообщение
Не понятно что и куда
Читай учебник и справочники - там есть азы.
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
26.05.2016, 17:41  [ТС]
Времени сейчас пока совсем нет. На выходных попробую прочитать какой нибудь учебник для чайников.
Цитата Сообщение от mss Посмотреть сообщение
Сделай отдельный запрос для модификации таблицы Merchen
На добавление я понимаю, что могу обратится только к таблице Merchen. Просто в конец записать запись.
А вот на удаление и апдейт нужна именно текущая запись. На которой указатель в DbGrid.
Если я буду посылать новый запрос на удаление/редактирование, как мне указать, чтобы была удаленна именно нужная запись?
Это нужно считывать все значения ячеек выбранной записи и указывать WHERE какая чему равна?
0
5981 / 4556 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
26.05.2016, 20:30
SELECT говорит какие поля выбрать
FROM говорит откуда выбирать
WHERE говорит по какому условию выбирать

Цитата Сообщение от daviddraiman Посмотреть сообщение
Это нужно считывать все значения ячеек выбранной записи и указывать WHERE какая чему равна?
когда вы укажите условие SQL сам отберет нужные строки
1
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 33
26.05.2016, 21:41  [ТС]
Решил проблему следующим образом. Для всех операций создал отдельный ADOQuery. По нажатию на кнопку удалить следующий код:
if Application.MessageBox('Удалить текущую записть?','Подтвердите удаление',MB_YESNO)=IDYES then
begin
Delphi
1
2
3
4
5
  idMer:=(ADOTovary.Fields.FieldByName('ID_Merchen').AsInteger);
  ADOQueryCreate.SQL.Clear;
  ADOQueryCreate.SQL.Add('SELECT * From Merchen WHERE Merchen.ID_Merchen='+inttostr(idMer));
  ADOQueryCreate.Active:=True;
  ADOQueryCreate.delete;
Прокоментируйте пожалуйста может поправить что нибудь?
0
5981 / 4556 / 1095
Регистрация: 29.08.2013
Сообщений: 28,190
Записей в блоге: 3
26.05.2016, 22:15
Цитата Сообщение от daviddraiman Посмотреть сообщение
может поправить что нибудь?
да, написать
Delphi
1
2
3
4
idMer:=(ADOTovary.Fields.FieldByName('ID_Merchen').AsInteger);
  ADOQueryCreate.SQL.Clear;
  ADOQueryCreate.SQL.Add('Delete From Merchen WHERE Merchen.ID_Merchen='+inttostr(idMer));
  ADOQueryCreate.ExecSQL;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2016, 22:15
Помогаю со студенческими работами здесь

Ошибка при попытки программного открытия файла
Есть простая прога на с++ #include <windows.h> void main() { WinExec("c:\\a.exe",SW_SHOW); } Сделал проект с кнопкой и...

Вставка текущей даты при создании записи?
Используется access 2016 MySq -5,7-x64 Используются внешние таблицы. Вопрос. 1. Как сделать чтобы при создании записи...

Ошибка при попытки записать данные в Label из ComboBoxe
Доброго времени суток! Суть программки. В комбобокс попадают все данные пользователей, котоыре есть в БД, после выбора конкретного...

Ошибка 0xc0000225 и 0xc000000f при попытки установить Windows
Итак была сначала такая проблема: нетбук Asus EEEBook x205ta, стояла Windows 8, в процессе обновления до Windows 10 выключили свет, нетбук...

Ошибка удаления записи NS в DNS сервере
Всем привет. Вопрос такой. Попытался добавить NS запись вот сюда. имя db.test.ru.local.aakk.ru с адресом 192.168.10.10. Потом я...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru