Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 266

/ вопрос решён /

Доброго времени суток, уважаемые эксперты! Как обратиться к базе по нажатию кнопки, если я хочу удалить множество записей, например столбец «курс» равен 4 курсу, и все записи с этим значением удалить, а всем записям со значением 3 курс присвоить значение 4 курса?! Подскажите «плиз»! Это надо делать через SQL или как то можно по-другому???

alexlafa Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: alexlafa (статус: Посетитель)
Вопрос отправлен: 7 мая 2011, 18:58
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 10 мая 2011, 21:04; участников в обсуждении: 2.
alexlafa

alexlafa (статус: Посетитель), 7 мая 2011, 22:02 [#1]:

procedure TForm6.sButton1Click(Sender: TObject);
begin
 try
    datamodule3.ADOQuery1.SQL.Clear;
    datamodule3.ADOQuery1.SQL.Add('SELECT * FROM +Таблица1+ WHERE Курс LIKE %edit1.text%');
    datamodule3.ADOQuery1.Active:=True;
   except
    on e:Exception do
   end;
end;
Делаю запрос на поиск в столбце курс в базе, схожие по написанию с введенным значением в "Эдит", но поиск не получаеться и выдает ошибку, ошибка синтаксеса! не могу понять где подскажите пожалуйста!
Чернышев

Чернышев (статус: 1-ый класс), 8 мая 2011, 11:42 [#2]:

ошибка вот в этой строчке
datamodule3.ADOQuery1.SQL.Add('SELECT * FROM +Таблица1+ WHERE Курс LIKE %edit1.text%');
во-первых, выражение стоящее после LIKE должно быть в ковычках.
во-вторых, у тебя получается, что запрос ищет не по значению Edit1, а по строке 'edit1.text'

надо вот так:
datamodule3.ADOQuery1.SQL.Add('SELECT * FROM +Таблица1+ WHERE Курс LIKE ''%'+edit1.text+'%''');
Чернышев

Чернышев (статус: 1-ый класс), 8 мая 2011, 11:51 [#3]:

а по поводу твоего основного вопроса...
нужно использовать компонент ADOCommand
подключить его к твоего ADOConnection
а код получиться где-то такой вот

procedure TForm1.Button1Click(Sender: TObject);
begin
    //удаление записей
    ADOCommand.CommandText:='DELETE FROM имяТаблицы WHERE КУРС=4';
    ADOCommand.Execute;
    //обновление записей
    ADOCommand.CommandText:='UPDATE имяТаблицы SET КУРС=4 WHERE КУРС=3';
    ADOCommand.Execute;
end;
alexlafa

alexlafa (статус: Посетитель), 9 мая 2011, 22:12 [#4]:

Огромное вам спасибо, за помощь! Скажите, я понял, как сделать запрос по определенному столбцу, а можно ли как то сделать, что бы столбец выбирался, например из «Комбобокса», что бы Delphi сам формировал запрос на столбец и искал запись, введенную в «Едит». Будьте добры помогите с этим вопросом! Код запроса выглядит так.
Если я пытаюсь прописать параметр и присвоить «Комбобоксу», как я это проделал с «Едитом» то программа выдает ошибку на параметр. Подскажите, пожалуйста, как это сделать. Заранее благодарю!

procedure TForm6.sButton1Click(Sender: TObject);
 begin
datamodule3.ADOQuery1.SQL.Clear;
datamodule3.ADOQuery1.SQL.Text:='SELECT * FROM Таблица1 WHERE Курс LIKE W';
datamodule3.ADOQuery1.Parameters.ParamByName('W').Value:=form6.sEdit1.Text;
datamodule3.ADOQuery1.Active:=true;
 end;
alexlafa

alexlafa (статус: Посетитель), 9 мая 2011, 22:16 [#5]:

Или поиск сразу по всем столбцам таблици, то есть полностью в таблице!?
Чернышев

Чернышев (статус: 1-ый класс), 10 мая 2011, 21:04 [#6]:

если ты создаешь запрос во время выполнения программы, то нет нужды использовать параметры, формарируй запрос как я писал уже раньше

как я понял у тебя есть ComboBox с названиями столбцов, а в Edit ты вводишь значение по которому ты будешь искать
тогда все будет выглядеть вот так:
procedure TForm6.sButton1Click(Sender: TObject);
begin
   datamodule3.ADOQuery1.SQL.Clear;
   datamodule3.ADOQuery1.SQL.Text:='SELECT * FROM Таблица1 WHERE '+ComboBox.Items[ComboBox.ItemIndex]+'  LIKE
''%'+Edit.text+'%''';
   datamodule3.ADOQuery1.Active:=true;
 end;

а по поводу последнего я не очень понял...
в SQL запросе ты можешь указать несколько условий после WHERE, например:
SELECT * FROM Таблица WHERE field1 LIKE '%хор'  AND (field2='студент' OR field2='преподаватель')

почитай про SQL запросы в инете, очень много статей, все хорошо и понятно описано как и что

11 мая 2011, 10:56: Статус вопроса изменён на решённый (изменил автор вопроса — alexlafa)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.04 сек.