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

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

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

Ответить
Аватара пользователя
Unvictis
новенький
Сообщения: 48
Зарегистрирован: 17.07.2015 17:59:12
Откуда: Kokshetau, Kazakshtan
Контактная информация:

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

Сообщение Unvictis »

Здравствуйте, друзья! Пишу простенькую оболочку к базе данных на 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 и т. д. Заранее благодарю за ответ!
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

1-й вариант (подходит для TSQLQuery)
Запрос хранить в TStrHolder. В нём есть макросы.

Код: Выделить всё

  StrHolder1.MacroByName('Macro1').Value:=FMacroStr;
  quFind.SQL.Text:=StrHolder1.ExpandMacros;

Путь не очень удобный, но рабочий
2-й вариант - если используешь ZEOS
Возьми моё расширение TZMacroQuery
Он напрямую содержит макросы.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

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

Добавлено спустя 5 минут 31 секунду:
или посмотреть реализацию: SQL Query builder.
Ответить