Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78

Изменение SQL-запроса

21.03.2016, 09:38. Показов 1447. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, можно ли изменять запрос в ADOQuery, подставляя в него данные например из DBLookupComboBox?

Например есть запрос:
Delphi
1
2
3
4
ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('SELECT Result.Total, Team.Name_team, Sport.Name_sport');
 ADOQuery1.SQL.Add('FROM Team INNER JOIN (Sport INNER JOIN Result ON Sport.id_sport = Result.Sport_result)ON Team.id_team = Result.Team_result WHERE Sport.Name_sport="Бильярд" ORDER BY Result.Total');
 ADOQuery1.Active:=True;
нужно из DBLookupComboBox менять в этом запросе слово "Бильярд" на другое
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2016, 09:38
Ответы с готовыми решениями:

Изменение содержимого посредством sql запроса
Всем доброго времени суток, работаю с бд Access, есть 1 таблица в ней 2 ячейки, которые обновляются посредством определенных действий,...

Изменение запроса в зависимости от выбранных строк в нескольких DbGrid (в SQL получить значения из нескольких DataSet)
Здравствуйте. Есть таблицы и компоненты: Tbl_authors – Таблица авторов. С ней связаны компоненты: - ADOTable_authors, -...

2 Запроса: SQL
Здравствуйте. Помогите сделать два запроса SQL в делфи у компонентов ADOQuery. 1) сколько больных было принят в поликлинике и на дому...

6
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,183
Записей в блоге: 3
21.03.2016, 10:13
Цитата Сообщение от Николай Спешил Посмотреть сообщение
можно ли изменять запрос в ADOQuery
можно, запрос - это текст. который вы передаете в БД для выполнения.
пока вы не сделали Active - это обычная строка
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
21.03.2016, 10:19  [ТС]
Можно по подробней, как например по нажатию кнопки, текст из DBLookupComboBox вставить вместо существующего там слова?
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,183
Записей в блоге: 3
21.03.2016, 10:26
Лучший ответ Сообщение было отмечено Николай Спешил как решение

Решение

так и вставляетй
Delphi
1
2
s:=Edit1.Text;
query.sql.text:='select * from table where pole1='+quotedstr(s)+' order by pole1';
1
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
21.03.2016, 10:55  [ТС]
qwertehok, Спасибо большое! Подскажи ещё, если мне нужно будет не текст передавать а число, то вместо +quotedstr(s)+ что нужно писать. Я просто до этого с этим не сталкивался?
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,183
Записей в блоге: 3
21.03.2016, 11:04
ты передаешь в базу данных ЗАПРОС
это запрос - ТЕКСТОВАЯ СТРОКА
для дельфи

а для базы данных все текстовые поля должны быть в кавычках. остальные нет.
0
4 / 4 / 2
Регистрация: 22.10.2012
Сообщений: 78
12.04.2016, 11:24  [ТС]
Помогите с текстом запроса, не получается вести отбор по числовому полю. По нажатию кнопки, вначале выполняю запрос на вывод всех записей:
Delphi
1
2
3
4
ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT Zayavka.id_zayavka, Zayavka.Fio_zayavka, Zayavka.Pos, Worker.id_worker, Worker.Fio_worker, Worker.Born_worker, Team.id_team, Team.Name_team, Sport.id_sport, Sport.Name_sport');
  ADOQuery1.SQL.Add('FROM Worker INNER JOIN (Team INNER JOIN (Sport INNER JOIN Zayavka ON Sport.id_sport = Zayavka.Sport_zayavka) ON Team.id_team = Zayavka.Team_zayavka) ON Worker.id_worker = Zayavka.Fio_zayavka ORDER BY Sport.Name_sport,Team.Name_team, Zayavka.Pos');
  ADOQuery1.Active:=True;
Далее в переменную idw - записывается значение ключевого поля из таблицы Фамилий
Delphi
1
 idw:=DBLookupComboBox1.KeyValue;
Далее идет проверка условия на существование такой фамилии в запросе по ключевому полю:
Delphi
1
 if (ADOQuery1.Locate('id_worker', idw, [])) then
Если условие выполняется, то выполняю запрос на вывод всех записей удовлетворяющих данному условию:
Delphi
1
2
3
4
5
6
begin
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT Zayavka.id_zayavka, Zayavka.Fio_zayavka, Zayavka.Pos, Worker.id_worker, Worker.Fio_worker, Worker.Born_worker, Team.id_team, Team.Name_team, Sport.id_sport, Sport.Name_sport');
  ADOQuery1.SQL.Add('FROM Worker INNER JOIN (Team INNER JOIN (Sport INNER JOIN Zayavka ON Sport.id_sport = Zayavka.Sport_zayavka) ON Team.id_team = Zayavka.Team_zayavka) ON Worker.id_worker = Zayavka.Fio_zayavka ');
  ADOQuery1.SQL.Add('WHERE (Worker.id_worker=idw) ORDER BY Sport.Name_sport,Team.Name_team, Zayavka.Pos');
  ADOQuery1.Active:=True; exit;
Выдает ошибку: Параметр idw не имеет значения по умолчанию.

Добавлено через 49 минут
Дописал в текст запроса
Delphi
1
ADOQuery1.Parameters.ParamByName('idw').Value := DBLookupComboBox1.KeyValue;
В итоге запрос выглядит так и все работает:
Delphi
1
2
3
4
5
6
ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT Zayavka.id_zayavka, Zayavka.Pos, Worker.id_worker, Worker.Fio_worker, Worker.Born_worker, Team.id_team, Team.Name_team, Sport.id_sport, Sport.Name_sport');
  ADOQuery1.SQL.Add('FROM Worker INNER JOIN (Team INNER JOIN (Sport INNER JOIN Zayavka ON Sport.id_sport = Zayavka.Sport_zayavka) ON Team.id_team = Zayavka.Team_zayavka) ON Worker.id_worker = Zayavka.Fio_zayavka ');
  ADOQuery1.SQL.Add('WHERE (Worker.id_worker=idw) ORDER BY Sport.Name_sport,Team.Name_team, Zayavka.Pos');
 ADOQuery1.Parameters.ParamByName('idw').Value := DBLookupComboBox1.KeyValue;
  ADOQuery1.Active:=True;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2016, 11:24
Помогаю со студенческими работами здесь

Доработка SQL-запроса
Доброго дня, господа форумчане. Получилась у меня такая вот задачка - выбрать одно поле из двух таблиц по условию. Есть два справочника...

Выполнение запроса sql
При экспорте или при выполнение запроса, если имя фотографии повторяется(поле ph.naimphoto), его не выводит. В коде вроде этого не...

Создание SQL запроса
Всем добрый вечер!!!! Суть такая: Есть 6 таблиц сделаные в МS Access. Уже подключены к Delphi. Теперь мне надо сделать 3-4 запроса в SQL,...

Создание SQL запроса
в архиве в папке /base\db\ лежат 3 таблицы: 1. Группы, 2. Студенты,3. Количество оценок Sum_Oc5-кол-во 5рок,Sum_Oc4-кол-во четверок, и т.д....

Создание SQL запроса
Нужно создать запрос, который преобразует числовой формат даты, и вычислит сумму в данном случае за март и апрель в 1-ой табл. и выведет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru