Заменить или отредактировать части SQL-выражения

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Заменить или отредактировать части SQL-выражения

Сообщение Unvictis » 27.04.2016 12:31:14

Здравствуйте, друзья! Пишу простенькую оболочку к базе данных на Lazarus и SQLite3 для ведения складского учёта для своей мастерской. Понимаю, что этот вопрос может быть и немного не по теме, заранее прошу извенения.

Хотелось бы иметь возможность изменять отдельые части SQL-выражения,
например, есть у нас выражение:

Код: Выделить всё
SELECT * FROM Parts WHERE Selling = 0 ORDER BY Name DESC;


А мне нужно скажем, полностью убрать отсюда часть WHERE (! а ведь здесь может быть несколько параметров разделённых AND и/или за WHERE может и не быть ORDER BY), заменить её на другое WHERE (например: WHERE Selling = 1 AND Condition = 5), или подобное же проделать с ORDER BY. Кажется это называется парсинг.

Есть ли какие-либо готовые алгоритмы на этот счёт? Или придётся мучится изобретая велосипед операторами Pos, Insert и т. д. Заранее благодарю за ответ!
Аватара пользователя
Unvictis
новенький
 
Сообщения: 48
Зарегистрирован: 17.07.2015 18:59:12
Откуда: Kokshetau, Kazakshtan

Re: Заменить или отредактировать части SQL-выражения

Сообщение alexs » 27.04.2016 15:38:25

1-й вариант (подходит для TSQLQuery)
Запрос хранить в TStrHolder. В нём есть макросы.
Код: Выделить всё
  StrHolder1.MacroByName('Macro1').Value:=FMacroStr;
  quFind.SQL.Text:=StrHolder1.ExpandMacros;

Путь не очень удобный, но рабочий
2-й вариант - если используешь ZEOS
Возьми моё расширение TZMacroQuery
Он напрямую содержит макросы.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Заменить или отредактировать части SQL-выражения

Сообщение pupsik » 27.04.2016 22:39:36

http://www.thedelphigeek.com/2015/04/runtime-sql-query-builder.html

Добавлено спустя 5 минут 31 секунду:
или посмотреть реализацию: SQL Query builder.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 249

Рейтинг@Mail.ru