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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 18:22   #1
Schutze
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 10
Печаль Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....'))

Вообщем сил моих уже нет....перерыл весь интернет и все форумы, но внятного ответа так и не нашел! Какой нужно сделать запрос SQL, чтобы удалить строку которую я выделил. Тоесть выбираю определенную строку в DBGride и после нажатия кнопочки, эта строка полностью удаляется. На форме находятся компоненты: DBGrid, Query, DataSource.
Вот мой код, но постоянно вылетает ошибка:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
id:string;
begin
id:=Query1.FieldByName('Key').AsString;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete From new Where Key='+id);
Query1.ExecSQL;
Query1.SQL.Clear;
Query1.SQL.Add('Select * From new');
Query1.Open;
end;
Key - это ключевое поле, а new - это моя таблица.

Последний раз редактировалось Schutze; 29.11.2009 в 18:28.
Schutze вне форума Ответить с цитированием
Старый 29.11.2009, 18:36   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Смысл такой:
Код:
   ADOQ1.DeleteRecords(arCurrent);
   ADOQ1.edit;
   ADOQ1.post;
мм??
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 29.11.2009, 18:40   #3
Schutze
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
Смысл такой:
Код:
   ADOQ1.DeleteRecords(arCurrent);
   ADOQ1.edit;
   ADOQ1.post;
мм??
Смысл в том, чтобы с помощью компонентов TDBGrid, TQuery (не ADOQuery!), TDataSource я смог удалить любую выделенную мной строку!
Schutze вне форума Ответить с цитированием
Старый 29.11.2009, 19:19   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Думаю в следующем примере нету разницы особой между Query и ADOQuery?
Вот тебе код:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 i: integer;
 str: string;
begin
 str:= DBGrid1.DataSource.DataSet.Fields[0].AsString;
 ShowMessage(str); //проверка
 ADOQ1.Active:= False;
 ADOQ1.SQL.Clear;
 ADOQ1.SQL.Add('DELETE FROM my_table1 WHERE my_text="' + str + '";');
 ADOQ1.ExecSQL;
end;
Пример понятен?
В твоем коде, я так и не увидел использование DBGrid.
А вообще есть раздел на форуме - БД в Делфи.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 29.11.2009 в 19:25.
Roof вне форума Ответить с цитированием
Старый 29.11.2009, 19:31   #5
Schutze
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 10
По умолчанию

всё равно вылетает такое:
Schutze вне форума Ответить с цитированием
Старый 29.11.2009, 19:31   #6
Schutze
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 10
По умолчанию

Schutze вне форума Ответить с цитированием
Старый 29.11.2009, 22:15   #7
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

1)А у тебя DBGrid воообще отображает данные из таблицы?
2)
Код:
 ADOQ1.SQL.Add('DELETE FROM my_table1 WHERE my_text="' + str + '";');
"" - эти кавычки я использовал для типа поля VARCHAR.
А у тебя id - явно числовой - значит "" - не нужны.

3) Не испоьзуй названия key и new. Назови хотя бы my_key и my_table.

4) Держи код:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 my_id: integer;
begin
 my_id:= DBGrid1.DataSource.DataSet.Fields[0].AsInteger;//предполагается,
//что id высвечена в нулевом столбце DBGrid.
//Если не в нулевом - меняй значение [0] на номер столбца. Считаются с нуля.
 ShowMessage(IntToStr(my_id)); //проверка
 ADOQ1.Active:= False;
 ADOQ1.SQL.Clear;
 ADOQ1.SQL.Add('DELETE FROM my_table1 WHERE id=' + IntToStr(my_id) + ';');
 ADOQ1.ExecSQL;
end;
У меня все работает. При условии, что данные отображаются в DBGrid.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникла проблема в программировании SQL запроса с помощью компонента TQuery Herly БД в Delphi 23 07.11.2009 18:16
SQL: Insert и Delete в чем ошибка? FReeMAN(Q) Помощь студентам 2 17.04.2009 18:09
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08
Query1.SQL.Add('.......'); <--- ПОМОГИТЕ !!! SALEM БД в Delphi 3 24.11.2006 11:29