Проблема с параметрами в запросе!

salamatsalamat Москва
отредактировано 16:25 Раздел: FastReport 4.0
4.7.147

Добрый день! Уже пятый год пользуемся Fast и достаточно довольны. К сожалению случилась беда! Уже 4-й день не могу разобраться.
Прошу всех кто сможет помочь мне!
Проблема такая.
Есть Adoquery1 c текстом
1. SELECT(SELECT TOP 1 ficheno FROM lg_100_02_orfiche WHERE logicalref = SIF.ORDFICHEREF) AS NOMRE,
(SELECT TOP 1 DEFINITION_ FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSTERI,
(SELECT TOP 1 CITY FROM LG_100_CLCARD WHERE LOGICALREF=SIF.CLIENTREF )AS CITY,
(SELECT TOP 1 CODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALKODU,
(SELECT TOP 1 NAME FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALADI,
(SELECT TOP 1 PRODUCERCODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALUR,
STOCKREF, ORDFICHEREF, CLIENTREF,LINETYPE,DETLINE, LINENO_, TRCODE, DATE_, TIME_, SPECODE, AMOUNT, PRICE, TOTAL, SHIPPEDAMOUNT, (AMOUNT - SHIPPEDAMOUNT) AS QALAN, DISCPER,
DISTCOST, DISTDISC, DISTEXP, DISTPROM, VAT, VATAMNT, VATMATRAH, LINEEXP, CLOSED, PRCURR, PRPRICE, REPORTRATE, BRANCH, DEPARTMENT, ONVEHICLE, ORDEREDAMOUNT
FROM LG_100_02_ORFLINE SIF
WHERE((SELECT TOP 1 definition_ FROM lg_100_clcard WHERE logicalref = SIF.CLIENTREF) LIKE :1 ) AND SIF.DATE_ > :9
:1 и :9 передается из диалога.
Все работает отлично., Но, уже все последующие Adoquery2-3-4 с параметрами :2, :3 и т.д. не работают. Только первый запрос работает, а остальные даже на профайлер (MS SQL Profiler) не отправляется. Элементарно, делаю второй Adoquery2 с таким же текстом (с этими же или с другими параметрами), но ничего не меняется, только первый запрос сработает.
Почему? Что я не так делаю? Остальные запросы почему не работают?

2. Пробовал через Exec
--
declare @sql varchar (8000)
select @sql = 'SELECT(SELECT TOP 1 ficheno FROM lg_100_02_orfiche WHERE logicalref = SIF.ORDFICHEREF) AS NOMRE,
(SELECT TOP 1 DEFINITION_ FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSTERI,
(SELECT TOP 1 CODE FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSKODU,
(SELECT TOP 1 CITY FROM LG_100_CLCARD WHERE LOGICALREF=SIF.CLIENTREF )AS CITY,
(SELECT TOP 1 CODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALKODU,
(SELECT TOP 1 NAME FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALADI,
(SELECT TOP 1 PRODUCERCODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALUR,
STOCKREF, ORDFICHEREF, CLIENTREF,LINETYPE,DETLINE, LINENO_, TRCODE, DATE_, TIME_, SPECODE, AMOUNT, PRICE, TOTAL, SHIPPEDAMOUNT, (AMOUNT - SHIPPEDAMOUNT) AS QALAN, DISCPER,
DISTCOST, DISTDISC, DISTEXP, DISTPROM, VAT, VATAMNT, VATMATRAH, LINEEXP, CLOSED, PRCURR, PRPRICE, REPORTRATE, BRANCH, DEPARTMENT, ONVEHICLE, ORDEREDAMOUNT
FROM LG_100_02_ORFLINE SIF
WHERE((SELECT TOP 1 definition_ FROM lg_100_clcard WHERE logicalref = SIF.CLIENTREF) LIKE '+ :1
--
тоже не работает, выдает ошибку "CommandText does not return a result set."
А на профайлер отправляет вот это
--
exec sp_executesql N'declare @sql varchar (8000)
select @sql = ''SELECT(SELECT TOP 1 ficheno FROM lg_100_02_orfiche WHERE logicalref = SIF.ORDFICHEREF) AS NOMRE,
(SELECT TOP 1 DEFINITION_ FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSTERI,
(SELECT TOP 1 CITY FROM LG_100_CLCARD WHERE LOGICALREF=SIF.CLIENTREF )AS CITY,
(SELECT TOP 1 CODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALKODU,
(SELECT TOP 1 NAME FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALADI,
(SELECT TOP 1 PRODUCERCODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALUR,
STOCKREF, ORDFICHEREF, CLIENTREF,LINETYPE,DETLINE, LINENO_, TRCODE, DATE_, TIME_, SPECODE, AMOUNT, PRICE, TOTAL, SHIPPEDAMOUNT, (AMOUNT - SHIPPEDAMOUNT) AS QALAN, DISCPER,
DISTCOST, DISTDISC, DISTEXP, DISTPROM, VAT, VATAMNT, VATMATRAH, LINEEXP, CLOSED, PRCURR, PRPRICE, REPORTRATE, BRANCH, DEPARTMENT, ONVEHICLE, ORDEREDAMOUNT
FROM LG_100_02_ORFLINE SIF
WHERE((SELECT TOP 1 definition_ FROM lg_100_clcard WHERE logicalref = SIF.CLIENTREF) LIKE ''+ @P1

', N'@P1 nvarchar(1)', N'%'
--
Почему? В чем проблема?

3. Мне на самом деле нужно сделать View с Adoquery1, а потом в других Adoquery2-3-4 их вызывать с методом Select * …
Составил такой запрос
--
create view ALSIP
AS SELECT(SELECT TOP 1 ficheno FROM lg_100_02_orfiche WHERE logicalref = SIF.ORDFICHEREF) AS NOMRE,
(SELECT TOP 1 DEFINITION_ FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSTERI,
(SELECT TOP 1 CITY FROM LG_100_CLCARD WHERE LOGICALREF=SIF.CLIENTREF )AS CITY,
(SELECT TOP 1 CODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALKODU,
(SELECT TOP 1 NAME FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALADI,
(SELECT TOP 1 PRODUCERCODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALUR,
STOCKREF, ORDFICHEREF, CLIENTREF,LINETYPE,DETLINE, LINENO_, TRCODE, DATE_, TIME_, SPECODE, AMOUNT, PRICE, TOTAL, SHIPPEDAMOUNT, (AMOUNT - SHIPPEDAMOUNT) AS QALAN, DISCPER,
DISTCOST, DISTDISC, DISTEXP, DISTPROM, VAT, VATAMNT, VATMATRAH, LINEEXP, CLOSED, PRCURR, PRPRICE, REPORTRATE, BRANCH, DEPARTMENT, ONVEHICLE, ORDEREDAMOUNT
FROM LG_100_02_ORFLINE SIF
WHERE((SELECT TOP 1 definition_ FROM lg_100_clcard WHERE logicalref = SIF.CLIENTREF) LIKE :1 ) AND SIF.DATE_ > :9
--
Ругается что, Incorrect syntax near the keyword 'view'.
Здесь уже SQL ругается знаю, но решить не смог.
Где тут ошибка или как решить проблему?
Как создавать View с помощью Adoquery с параметрами из диалога ???
На Profiler отправляется такой запрос ...
--
exec sp_executesql N'create view ALSIP
AS SELECT(SELECT TOP 1 ficheno FROM lg_100_02_orfiche WHERE logicalref = SIF.ORDFICHEREF) AS NOMRE,
(SELECT TOP 1 DEFINITION_ FROM LG_100_CLCARD WHERE LOGICALREF = SIF.CLIENTREF) AS MUSTERI,
(SELECT TOP 1 CITY FROM LG_100_CLCARD WHERE LOGICALREF=SIF.CLIENTREF )AS CITY,
(SELECT TOP 1 CODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALKODU,
(SELECT TOP 1 NAME FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALADI,
(SELECT TOP 1 PRODUCERCODE FROM LG_100_ITEMS WHERE LOGICALREF = SIF.STOCKREF) AS MALUR,
STOCKREF, ORDFICHEREF, CLIENTREF,LINETYPE,DETLINE, LINENO_, TRCODE, DATE_, TIME_, SPECODE, AMOUNT, PRICE, TOTAL, SHIPPEDAMOUNT, (AMOUNT - SHIPPEDAMOUNT) AS QALAN, DISCPER,
DISTCOST, DISTDISC, DISTEXP, DISTPROM, VAT, VATAMNT, VATMATRAH, LINEEXP, CLOSED, PRCURR, PRPRICE, REPORTRATE, BRANCH, DEPARTMENT, ONVEHICLE, ORDEREDAMOUNT
FROM LG_100_02_ORFLINE SIF
WHERE((SELECT TOP 1 definition_ FROM lg_100_clcard WHERE logicalref = SIF.CLIENTREF) LIKE @P1 ) AND SIF.DATE_ > @P2
-- perviy
', N'@P1 nvarchar(1),@P2 datetime', N'%', 'Sep 1 2008 12:00:00:000AM'
--
Где тут ошибка или как решить проблему?
Как создавать View с помощью Adoquery с параметрами из диалога ???
Очень надеюсь на помощь!!!
Длинный текст получился, знаю - старался подробно нарисовать картину...
Вопрос очень срочный! Заранее благодарю!

С Уважением.







Комментарии

  • salamatsalamat Москва
    отредактировано 16:25
    Помогите!
    Сделал пустую форму, добавил диалог с Date, потом передал dateedit1.date ( :3 ) в запрос. Не сработал SQL запрос и на профайлер ничего не отправил. Убираю параметр :3 , все нормально работает. Неужели проблема с версией? Версия: 4.7.147

    Очень прошу!
    Помогите!!!!!!!!!!
    Буду очень признателен!!!
  • Lizard~Lizard~ Тольятти
    отредактировано 16:25
    salamat написал: »
    Помогите!
    Сделал пустую форму, добавил диалог с Date, потом передал dateedit1.date ( :3 ) в запрос. Не сработал SQL запрос и на профайлер ничего не отправил. Убираю параметр :3 , все нормально работает. Неужели проблема с версией? Версия: 4.7.147

    Очень прошу!
    Помогите!!!!!!!!!!
    Буду очень признателен!!!

    Глас вопиющего в пустыне...
    Давай пример отчета с проблемой. Обязательно с использованием демонстрационных баз, которые идут с Delphi.
    С таким описанием проблемы никто разбираться не будет. Делай простейший пример и давай на анализ. Тогда больше вероятность, что помогут.
  • salamatsalamat Москва
    отредактировано 16:25
    LizarD написал: »
    Глас вопиющего в пустыне...
    Давай пример отчета с проблемой. Обязательно с использованием демонстрационных баз, которые идут с Delphi.
    С таким описанием проблемы никто разбираться не будет. Делай простейший пример и давай на анализ. Тогда больше вероятность, что помогут.

    Lizard, огромное спасибо!

    По твоим примером на форуме, решил вопрос по другому - изменил запрос в коде.

    Удачи!

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.