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

Удаление из базы данных

22.04.2016, 12:27. Показов 1352. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Результат SQL запроса отображается в DBGrid.
При попытке удаления записи выбивает ошибку : "Недостаточные сведения о ключевом столбце для обновления".
Подскажите что делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2016, 12:27
Ответы с готовыми решениями:

Удаление из базы данных
Не могу сообразить как сделать удаление из базы по нажатию на кнопку. Помогите, пожалуйста, разобраться. На форумах и в интернете смотрела....

Удаление из базы данных
procedure TDBMain.Label3Click(Sender: TObject); var nm,rnn:string; i:integer; begin i:= MessageDlg('Хотите удалить...

Удаление из базы данных
Почти сделал базу данных, но не могу понять почему у меня не работает удаление, то есть удаляет, но не то что нужно. Вроде алгоритм...

8
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
22.04.2016, 12:42
Цитата Сообщение от Zeqzer Посмотреть сообщение
Подскажите что делать?
В запросе выбирается столбец с PK (Primary Key)?
0
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 59
22.04.2016, 12:50  [ТС]
Не выбирается.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
22.04.2016, 13:59
Цитата Сообщение от Zeqzer Посмотреть сообщение
Не выбирается
Тогда как ты хочешь удалить строку?

Допустим у меня есть таблица заказов
id_order - PK
id_good
good_volume

Делаю запрос, не выбирая PK
SQL
1
2
SELECT id_good, good_volume
FROM tab1
Теперь в форме указываю какую-то строку и даю команду Удалить.
Форма формирует такой SQL
SQL
1
2
3
4
DELETE 
FROM tab1
WHERE id_good= <выбран. значение>
AND  good_volume = <выбран. значение>
Поскольку в общем случае заказов, в которых повторяются одинаковые товары с одинаковым количеством м.б. много, то будет удалена не одна строка, а много.
Вот если бы в выборке был id_order, тогда
SQL
1
2
3
DELETE 
FROM tab1
WHERE id_order = <выбран. значение>
Это удалит только одну строку, поскольку значение PK уникально по определению.

Чтобы ты случайно не удалил кучу строк, программа тебе и выдает соответствующее сообщение.
0
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 59
22.04.2016, 14:50  [ТС]
У меня в базе данных 5 таблиц.
Например Приход:
Id_prixoda(РК),Id_obekta_ycheta,Opisanie ,Data,Vremya,Kolichestvo.
Вот такой запрос использую для отображения в DBGrid :
SQL
1
2
SELECT prixod.Data, prixod.Vremya, obekti_ycheta.Naimenovanie, tipi_obektov.Nazvanie, prixod.Kolichestvo, obekti_ycheta.Edinica_izmerenia
FROM tipi_obektov INNER JOIN (obekti_ycheta INNER JOIN prixod ON obekti_ycheta.Id_obekta = prixod.Id_obekta_ycheta) ON tipi_obektov.Id_tipa = obekti_ycheta.Id_tipa;
Как мне сделать удаление?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
22.04.2016, 15:16
Цитата Сообщение от Zeqzer Посмотреть сообщение
Как мне сделать удаление?
1. в SELECT выбрать id (PK) всех таблиц, из которых собираешься удалять строки
2. для каждой таблицы, из которой надо удалять, сформировать свой запрос на удаление и все их запихнуть в кнопку "Удалить". Понятно, что если в БД есть связь таблиц родительская-дочерняя, то начинать удаление с дочерних таблиц.
0
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 59
22.04.2016, 15:31  [ТС]
Удалять мне необходимо запись именно из таблицы Приход.
Запрос использую только для отображения данных(например чтобы в поле id_obekta_ycheta отображалась не цифра,а название объекта и т.д.).
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
22.04.2016, 16:01
Цитата Сообщение от Zeqzer Посмотреть сообщение
Удалять мне необходимо запись именно из таблицы Приход
Значит выбирай только одно id - id_prixoda

PS
На будущее: названия объектов по-русски английскими буквами выглядят очень непрофессионально. Возьми словарь и находи английские эквиваленты. Заодно словарный запас пополнишь.
1
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 59
23.04.2016, 14:34  [ТС]
Спасибо.

Добавлено через 22 часа 27 минут
Я все равно немного не понял как это сделать.
В access я знаю как сделать запрос на удаление.
Как удалить выбранную запись?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2016, 14:34
Помогаю со студенческими работами здесь

Удаление записей из базы данных. Нужен совет
Всем доброго дня! Прошу помочь советом. Вот код: var d1, d2: TDate; begin if...

Очистка базы данных от записей, помеченных на удаление
Как очистить базу данных от помеченных на удаление записей?

Удаление конкретной ячейки базы данных из общего столбца
Здравствуйте, товарищи! Есть база данных с разграничением прав. Одна и та же используется для отображения обычному пользователю и...

Как вытащить файл из базы данных? Создание и удаление временных файлов
Как вытащить файл из базы данных? Я так понимаю, что понадобится временный файл. Затем я его пользователю открою. А потом бы хотелось...

При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961)
При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961) Код программы такой unit...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru