Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 22:44   #1
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
Вопрос Удаление множества строк

Такая проблемка возникла...
Есть таблица с проверками, в которой столбцы: что проверялось, когда, кем и недостатки. Недостатков соответственно для каждой проверки несколько, я сделал так что для одной проверки у меня создаеться столько строк, сколько недостатков(строка дублируеться полностью кроме столбца недостатки)...выводиться таблица в ДБГрид, показываться все столбцы кроме недостатков и скрываю дублированные строки. Но как мне сделать, что бы при выделении в ДБгриде проверки и нажатии на кнопку удаления проверки...удалялись все дублированные записи по этой проверке?
Вот такая беда
Помогите кто сможет....
Sinker вне форума Ответить с цитированием
Старый 01.04.2009, 08:42   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Если подскажете
1) Какую БД используете
2) какими компонентами пользуетесь для доступа
То возможно ответить станет легче
vovk вне форума Ответить с цитированием
Старый 01.04.2009, 08:47   #3
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

DELETE FROM table WHERE что проверялось = что проверялось AND когда=когда AND кем=кем
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 01.04.2009, 16:37   #4
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
По умолчанию

1) Использую Access
2) ADOQuery, DataSourse, DBGrid
Sinker вне форума Ответить с цитированием
Старый 01.04.2009, 16:53   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

тогда прекрастно подходит то что предложил Neobrat
vovk вне форума Ответить с цитированием
Старый 06.04.2009, 00:45   #6
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
По умолчанию

Сделал все как сказали....не работает...видимо где то тупанул, не подскажете где????
adoquery1.SQL.Text:='DELETE FROM proverka WHERE prover_organ =' +pdjxpdbgrid1.DataSource.DataSet.Fi eldValues['prover_organ'].AsString+' AND data='+pdjxpdbgrid1.DataSource.Data Set.FieldValues['data'].AsString+' AND fio_prover='+pdjxpdbgrid1.DataSourc e.DataSet.FieldValues['fio_prover'].AsString;
Sinker вне форума Ответить с цитированием
Старый 06.04.2009, 14:36   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

просто недостаточно кавычек для выделения подставляемых значений - но это геморой сплошной их проставлять каждый раз
лучше всего юзать параметры
по типу
Код:
adoquery1.SQL.Text:='
DELETE FROM proverka 
WHERE prover_organ = :p0 
    AND data= :p1
    AND fio_prover= :p2';
и далее подставляешь параметры
Код:
adoquery1.ParamByName('p0').AsString := pdjxpdbgrid1.DataSource.DataSet.FieldValues['prover_organ'].AsString;
adoquery1.ParamByName('p1').AsString := pdjxpdbgrid1.DataSource.DataSet.FieldValues ['data'].AsString;
adoquery1.ParamByName('p2').AsString := pdjxpdbgrid1.DataSource.DataSet.Field Values['fio_prover'].AsString;
soleil@mmc вне форума Ответить с цитированием
Старый 06.04.2009, 20:12   #8
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
По умолчанию

У меня ошибку выдает на adoquery1.ParamByName('p0').AsStrin g, говорит что не знает что это такое =(((
Sinker вне форума Ответить с цитированием
Старый 06.04.2009, 20:31   #9
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
По умолчанию

Вообщем с ParamByName понял...но все равно ничего не работает
вот листинг....

adoquery1.SQL.Clear;
adoquery1.SQL.Text:='DELETE FROM proverka WHERE prover_organ = 0 AND data= 1 AND fio_prover= 2';
adoquery1.Parameters.ParamByName('p 0').Value := pdjxpdbgrid1.DataSource.DataSet.Fie ldValues['prover_organ'];
adoquery1.Parameters.ParamByName('p 1').Value := pdjxpdbgrid1.DataSource.DataSet.Fie ldValues ['data'].AsString;
adoquery1.Parameters.ParamByName('p 2').Value := pdjxpdbgrid1.DataSource.DataSet.Fie ldValues['fio_prover'].AsString;
adoquery1.ExecSQL;


Выдает ошибку:"Invalid variant operation"

Что делать?
Sinker вне форума Ответить с цитированием
Старый 06.04.2009, 20:43   #10
Sinker
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 27
По умолчанию

это : р параметр
Sinker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
Удаление из ListBox строк S.T.A.L.K.E.R. Общие вопросы Delphi 2 27.09.2009 05:15
Удаление строк из Memo Leksda Общие вопросы Delphi 6 20.03.2009 15:31
Удаление строк Dr.Badnezz Общие вопросы Delphi 1 07.10.2008 15:22
удаление строк Dime_x Microsoft Office Excel 2 07.10.2008 13:38