powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / подстановка значения поля в конструкцию запроса like
10 сообщений из 10, страница 1 из 1
подстановка значения поля в конструкцию запроса like
    #39762050
bdvX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, столкнулся с проблемой интерпретации запроса из Access в код на Delphi

вот код запроса, который работает в среде Access
в конструкцию LIKE подставляется значение поля таблицы
Код: sql
1.
2.
3.
4.
5.
SELECT Cashbox1.OrderID
FROM 
(SELECT * FROM Cashbox WHERE CashboxType = 1) AS Cashbox1,
(SELECT * FROM Cashbox WHERE CashboxType = 4) AS Cashbox2
WHERE (Cashbox1.CashboxDate > Cashbox2.CashboxDate) AND (Cashbox2.Comments LIKE "*"&[Cashbox1.OrderID]&" - *")



пытаюсь переписать запрос в Delphi
Код: pascal
1.
2.
3.
4.
5.
'SELECT Cashbox1.OrderID ' +
'FROM ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 1) AS Cashbox1, ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 4) AS Cashbox2 ' +
'WHERE (Cashbox1.CashboxDate > Cashbox2.CashboxDate) AND (Cashbox2.Comments LIKE ' + QuotedStr('%') + '&[Cashbox1.OrderID]&' + QuotedStr(' - *') + ')';


результат запрос 0 записей
понимаю что проблема здесь
Код: pascal
1.
'&[Cashbox1.OrderID]&'

но как написать правильно ...
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762055
bdvX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин, нашел опечатку
не изменил закрывающий * на %

Код: pascal
1.
2.
3.
4.
5.
'SELECT Cashbox1.OrderID ' +
'FROM ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 1) AS Cashbox1, ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 4) AS Cashbox2 ' +
'WHERE (Cashbox1.CashboxDate > Cashbox2.CashboxDate) AND (Cashbox2.Comments LIKE ' + QuotedStr('%') + '&[Cashbox1.OrderID]&' + QuotedStr(' - %') + ')';
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762064
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
+ '&'+VarToStr(Cashbox1.OrderID)+'&' +
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762072
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
'WHERE (:D1 > :D2) AND (:C LIKE :ID)';
Query.ParamByName('D1').Value := Cashbox1.CashboxDate;
Query.ParamByName('D2').Value := Cashbox2.CashboxDate;
Query.ParamByName('C').Value := Cashbox2.Comments;
Query.ParamByName('ID').Value := Cashbox1.OrderID;
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762077
bdvX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, решение мной уже описано
если вы посмотрите внимательно на код, то видно что выборка производится из одной таблицы и из программы параметры не передаются. условия и значения берутся из самой таблицы в запросе
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762150
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все значения берутся их таблицы, то не понятна суть вопроса.
Одиночных кавычек (которые ограничивают string) в запросе нет.
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762151
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
ShowMessage(Query.SQL.Text)


Показывает нужный запрос ???
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762156
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdvXблин, нашел опечатку
не изменил закрывающий * на %

Код: pascal
1.
2.
3.
4.
5.
'SELECT Cashbox1.OrderID ' +
'FROM ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 1) AS Cashbox1, ' +
'(SELECT * FROM Cashbox WHERE CashboxType = 4) AS Cashbox2 ' +
'WHERE (Cashbox1.CashboxDate > Cashbox2.CashboxDate) AND (Cashbox2.Comments LIKE ' + QuotedStr('%') + '&[Cashbox1.OrderID]&' + QuotedStr(' - %') + ')';


И это будет еще много раз, возможно всю твою карьеру, если не перейдешь, как правильно советуют, на использование параметров.
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762163
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо двух подзапросов проще написать так
Код: sql
1.
2.
3.
4.
5.
6.
SELECT A.OrderID
FROM Cashbox as A, Cashbox AS B
WHERE A.CashboxType = 1 AND
      B.CashboxType = 4 AND
      A.CashboxDate > B.CashboxDate AND 
      B.Comments LIKE "*"&[A.OrderID]&" - *"
...
Рейтинг: 0 / 0
подстановка значения поля в конструкцию запроса like
    #39762252
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем "переписывать" запрос в Delphi, если он самодостаточный?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / подстановка значения поля в конструкцию запроса like
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]