| 
| 
 | Вопрос # 5 266/ вопрос решён / | 
 |  Доброго времени суток, уважаемые эксперты! Как обратиться к  базе по нажатию кнопки, если я хочу удалить множество записей, например столбец «курс» равен 4 курсу, и все записи с этим значением удалить, а всем записям со значением  3 курс присвоить значение 4 курса?! Подскажите «плиз»! Это надо делать через SQL или как то можно по-другому??? 
|  |   Вопрос задал: alexlafa (статус: Посетитель)Вопрос отправлен: 7 мая 2011, 18:58
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 10 мая 2011, 21:04; участников в обсуждении: 2. 
|   | 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 (статус: Посетитель), 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 (статус: Посетитель), 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |