![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 102
|
![]()
Доброго времени суток, работаю на delphi 2010 + acces 2003 :
делаю групповое удаление записей из нескольких таблиц Таблица D главная (мастер) а все остальные детальные подчинены ей для этой задачи использую несколько компонентов ADOTable но они не участвуют в процессе удаления, а удаляю я записи через компоненты ADOQuery (связано это с тем что в некоторых таблицах нет соответствующих строк а в некоторых таблицах к одной строке относятся несколько вот. , в ADOTable нельзя использовать sql ) и несколько sql запросов в '''+DBEdit1.Text+'%'' '; отображается значение Код ID потому что по коду происходит связь между таблицами D.Код = P.PKey, D.Код = F. PKey ну и так далее, у каждой подчиненной есть свой код ID, ну короче использую нижеследующий код: # Код:
И в итоге ничего не удаляется а выскакивает ошибка (рисунок во вложении) а в чём проблема понять ни как не могу вот P.S. Буду рад за любую подсказку .. Последний раз редактировалось Stilet; 21.01.2013 в 21:05. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Active:=TRUE ???
Для этих целей ExecSQL есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 102
|
![]()
1) прошу прощения за тупость но что такое есть ExecSQL ? приведите какой нибудь пример по аналогии ...
(( Или вы имеете ввиду написать так # DataModule3.ADOQuery17.SQL.Text := 'delete from D where Код Like '''+DBEdit1.Text+'%'' '; DataModule3.ADOQuery17.ExecSQL; # )) ??? 2) главный вопрос по теме остается не решенным ! ![]() 3) Может быть у меня вообще неправильный подход решения этой задачи (может кто нибудь мне хотя бы намекнет как её решить ?) Последний раз редактировалось reihtmonbern; 22.01.2013 в 02:44. Причина: не дописка |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 27.11.2012
Сообщений: 190
|
![]()
Да, так и нужно. Не мешало бы еще пользоваться with
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
и цикл...
2 варианта Код:
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 102
|
![]() Цитата:
вот это я сделал и код изменил Код:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
в uses добавь ADODB
кидать ниче нинадо, для разового вызова проще на месте создать, поюзать и убить
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 102
|
![]()
Здравствуйте ещё раз попробовал ваш код всё работает хорошо но , к сожалению не удаляется строка из главной мастер таблицы D вот и делфи ругается выдает ошибку
: Параметр PKey не имеет значения по умолчанию . стоки из других детальных таблиц удаляются изумительно , Решил Ваш код немного изменить вообще удалить из него действия по таблице D чтоб он из неё ни чего не удалял # //DelTbl:array[0..5] of string=('P','F','K','DK','Budilnik' ,'D'); DelTbl:array[0..4] of string=('P','F','K','DK','Budilnik' ); # вот всё работает так же но делфи стал выдавать другую ошибку : Источник данных изменил или удалил значение ключа для данной строки в хранилище данных . Теперь удалена и локальная строка. В принципе меня устраивает второй вариант я строку из главной строки удалю дополнительно (ADOTable1.Delete ![]() я использовал свой старый код # DataModule3.ADOQuery41.Active:=fals e; DataModule3.ADOQuery41.SQL.Text := 'delete from P where PKey Like '''+DBEdit1.Text+'%'' '; DataModule3.ADOQuery41.ExecSQL; # и этот код удалят то что мне нужно но всё равно выскакивает ошибка (: Источник данных изменил или удалил значение ключа для данной строки в хранилище данных . Теперь удалена и локальная строка.) ??? как сделать так что бы эта ошибка не выскакивала во время работы приложения ?? во время компиляции всё хорошо . Последний раз редактировалось reihtmonbern; 23.01.2013 в 10:45. |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
Все верно из базы удалил запросом, все таблицы с изменениями нужно переоткрыть Close Open или Requery
и что-то с логикой не клеится, у тебя главная таблица и подчиненные? в правильной базе из главной удаляешь из подчиненных автоматом по ключу все чистится, нужно только правильно ключи и связи указать и не Лайками а четко по значению
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 23.01.2013 в 11:11. |
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 102
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать групповое удаление, а не по одному за щелчок. | Bushel | PHP | 6 | 22.11.2010 12:02 |
удаление записей | aiktz | Microsoft Office Access | 1 | 11.11.2010 22:25 |
Каскадное удаление записей | Liones | БД в Delphi | 7 | 14.05.2009 08:04 |
Удаление записей | Blackmore | БД в Delphi | 2 | 26.05.2008 08:18 |
Удаление записей | Arsgun | БД в Delphi | 7 | 09.07.2007 11:56 |