Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Глюки в ADO  [new]
patrick1968
Member

Откуда:
Сообщений: 513
Добрый день. Появилась у меня одна странная вещь. Перестала корректно работать программа, полез разбираться, выяснил, что один мой запрос выдает пустое множество (использую ADOQuery с параметрами), пробую прописать параметры в явном виде, результат тот же, переношу текст запроса в Management Studio, запрос отрабатывает корректно, выдает определенное количество записей, может кто сталкивался с подобным? Заранее благодарен.
22 ноя 16, 10:41    [19919368]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
1. select @@version
2. текст запроса
3. план выполнения запроса

телепаты в отпусках
22 ноя 16, 10:45    [19919382]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
aleks2
Guest
Верблюд
1. select @@version
2. текст запроса
3. план выполнения запроса

телепаты в отпусках


Нафига нужны дрянные телепаты, если есть профайлер?
22 ноя 16, 10:51    [19919410]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
patrick1968,

SET NOLOCK ON
22 ноя 16, 10:52    [19919419]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
не проснулся :) NOCOUNT ON
22 ноя 16, 10:58    [19919450]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
aleks2
Верблюд
1. select @@version
2. текст запроса
3. план выполнения запроса

телепаты в отпусках


Нафига нужны дрянные телепаты, если есть профайлер?


У автора профайлера нет, как я понял.
22 ноя 16, 10:59    [19919455]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
patrick1968
Member

Откуда:
Сообщений: 513
Запрос следующий

SELECT 5 Pok,  t2.[profil] ,1 as ed,  t2.[SUMP] as summary
  from T_SCHET_SLUCH t2
   join T_SCHET_ZAP t3 on t3.SchetZapID = t2.SchetZap
   join T_SCHET t4 on t4.SchetID = t3.Schet
   join T_REESTR_CLOSE_INFO t5 on t5.Schet = t3.Schet
    where t4.type_= 554
        and t2.USL_OK = 2
     and Month(t5.CloseDate) = 10 and Year(t5.CloseDate) = 2016
          and ((t4.CODE_MO = '7300l1') or (t4.CODE_MO = '7300n6') or (t4.CODE_MO = '7300r7') or (t4.CODE_MO = '7300r8') or (t4.CODE_MO = '7300r9')  or
           (t4.CODE_MO = '730106') or (t4.CODE_MO = '730143') or (t4.CODE_MO = '730144') or (t4.CODE_MO = '730145'))
    and t2.SUMP > 0


так вот в Management Studio он работает корректно, но если его перенести в ADOQuery, и выполнить там, то выдается пустое множество, стоит в ADOQuery Month(t5.CloseDate) = 10 поменять на Month(t5.CloseDate) = 9 то снова нормально, короче глюки!!!

Сообщение было отредактировано: 22 ноя 16, 12:59
22 ноя 16, 12:58    [19920236]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
Думаю тут две проблемы.

1. Делфи
2. Минздрав заставляет санитаров писать программы для ФОМС
22 ноя 16, 13:10    [19920314]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
patrick1968
Member

Откуда:
Сообщений: 513
а при чем тут санитары?
22 ноя 16, 13:15    [19920343]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
patrick1968,

и никаких параметров нет?

and t5.CloseDate>='20161001' and t5.CloseDate<'20161101'
and t4.CODE_MO in ('7300l1','7300n6','7300r7','7300r8','7300r9','730106','730143','730144','730145')
Так не короче будет? И индекс для t5.CloseDate можно использовать, если он есть.
22 ноя 16, 13:19    [19920365]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
Может к дельфистам в топик сходишь и спросишь, почему adoquery работает не так как ожидается. Потому что серверу точно все равно, откуда ты ему запрос передаешь, результат будет одинаковый. Значит проблема в клиенте.
22 ноя 16, 13:19    [19920367]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
И да, как вариант - используйте хранимые процедуры.
22 ноя 16, 13:25    [19920396]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
patrick1968,

Чтобы выяснить возвращает ли проблемный запрос данные или нет, отследите его выполнение профайлером, добавив в трассу столбец RowCounts.
Если запрос действительно не возвращает данные, отловите актуальный план выполнения и найдите в нем место, где Actual Number of Rows становится равным 0. Далее разбирайтесь из-за чего так происходит.

ЗЫ: Запрос, выполненный из студии и из приложения может иметь разные планы выполнения. Скорее всего, это и есть причина вашего "глюка".
22 ноя 16, 14:21    [19920777]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
invm
ЗЫ: Запрос, выполненный из студии и из приложения может иметь разные планы выполнения. Скорее всего, это и есть причина вашего "глюка".


У него сами запросы разные. Проще в форуме дельфистов спросить, они точно знать должны.
22 ноя 16, 14:28    [19920813]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
o-o
Guest
когда речь идет о дате, самое время уточнить, а какого типа ваша дата t5.CloseDate?
уж не строковая ли?
вот мой одинаковый запрос, выполненный с разными настройками.
приложение наверняка под другим логином ходит,
с другим дефолтным языком
declare @t table(CloseDate char(10));
insert into @t values ('09-10-2016');

set language russian;

select *
from @t t5
where Month(t5.CloseDate) = 10 and Year(t5.CloseDate) = 2016;

----------
--CloseDate
--09-10-2016

set language us_english;

select *
from @t t5
where Month(t5.CloseDate) = 10 and Year(t5.CloseDate) = 2016;
-----------
--CloseDate
22 ноя 16, 14:44    [19920892]     Ответить | Цитировать Сообщить модератору
 Re: Глюки в ADO  [new]
FreeBard
Member

Откуда:
Сообщений: 223
o-o
когда речь идет о дате, самое время уточнить, а какого типа ваша дата t5.CloseDate?
уж не строковая ли?

Вероятно, и скорее всего дата записана не в универсальном формате ggggmmdd
Больше тут гулять от настроек сессии нечему
23 ноя 16, 16:58    [19926277]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить