По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл. на о

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл. на о

Сообщение ds »

Не работает запрос, выдает простой результат. Не могу понять, в чем дело, все строковые переменные верны (таскал из буфера).

Цель запроса - определить рублевую и валютную цены в накладной на отпуск в производство по Номеру и дате ЛЗК и наименованию МЦ.

Скажите, пожалуйста, где я не прав?
____________________________________________

select spsopr.price, spsopr.vprice, katmc.name, basedoc.nodoc, basedoc.ddoc
from basedoc, katmc, spsopr, katsopr, stepdoc
where
((
501 == basedoc.viddoc and
date(21,03,2002) == basedoc.ddoc and
'000761-653ксу 26,03' == basedoc.nodoc and

'Кожа Ит. ZBR "Pitone" цв.морк.волна' == katmc.name and

katsopr.nrec == spsopr.csopr and
katmc.nrec == spsopr.cmcusl and
1 == spsopr.prmc
))
and katsopr.cstepdoc = stepdoc.nrec
and stepdoc.cbasedoc = basedoc.nrec
;
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

Опечатался - выдает пустой результат. А должна быть одна запись.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение Den »

А чего ты подцепки между basedoc-ом,stepdoc-om и katsopr-ом так интересно написал ??
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

В каком смысле странно? А запрос чуточку исправленный заработал. Но уж больно медленно, 3 минуты вертелся. А в одном отчете таких запросов будет штук 100. Может есть возможность ускорить. Переделываю отчет по движению по ЛЗК в разрезе МЦ в модуле производство - добавляю цены. Привязаться можно только по номеру, дате ЛЗК и МЦ. Nrec'ов в форме-прототипе нет.

Вот тот медленно работающий запрос. Как бы его ускорить?

select spsopr.price, spsopr.vprice
from basedoc, katmc, spsopr, katsopr, stepdoc
where
((
501 /== basedoc.viddoc and
date(21,03,2002) /== basedoc.ddoc and
'000761-653ксу 26,03' == basedoc.nodoc and

basedoc.nrec == stepdoc.cbasedoc and

'Кожа Ит. ZBR "Pitone" цв.морк.волна' == katmc.name and
katsopr.nrec /== spsopr.csopr and
katmc.nrec /== spsopr.cmcusl and
1 /== spsopr.prmc
))
and katsopr.cstepdoc = stepdoc.nrec
;
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение Vitas »

попробуй and katsopr.cstepdoc = stepdoc.nrec
занести в (( )) как
and katsopr.cstepdoc == stepdoc.nrec

Однозначно должно быстрее работать
Ищу возможности довести и так отличный продукт до еще большего блеска
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

Не работает, в подцепку нельзя включить данную строку, так как индекс по полям cbasedoc и nrec в таблице stepdoc не создан. Создать я его, не убив таблицы и не покорежив словарь, не могу. Не есть гут.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение m0p3e »

А куда этот индекс делся??? Он же стандартный! Кроме того можно строку не попадающую в выборку пометить как noIndex.
Например
KatSopr.cStepDoc == StepDoc.nrec (noIndex)
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

Индексов по этой таблице всего четыре:
1. Nrec
2. Cbasedoc
3. ATL_LASTDATE+ATL_LASTTIME
4. ATL_LASTUSER
и все...

а если писать (noindex), все равно выскакивает предупреждение, что нужен индекс по совокупности этих полей и вываливает пустой результат
:`(
А может, совсем по-другому можно запрос написать? Условие выборки в самом начале.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение m0p3e »

((
word(501) == baseDoc.vidDoc and
date(21,03,2002) == BaseDoc.dDoc and
string('номер') == BaseDoc.noDoc and

BaseDoc.nrec == StepDoc.cBaseDoc and
StepDoc.nrec == KatSopr.cStepDoc and

KatSopr.nrec == SpSopr.cSopr and
word(1) == SpSopr.PrMc and
string('имя МЦ') == KatMc.name and
KatMc.nrec == SpSopr.CmCusl
))

И ты хочешь сказать что в таком виде он у тебя ругается???
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

Не-а, в таком виде отрабатывает (не работает, если условия местами поменять).

Но выдает батву какую-то. По данной ЛЗК сформировано несколько накладных на отпуск и только в одной из них есть эта МЦ. А я в результате получаю шесть строк (соответствуют сформированным накладным), но вместо цен стоят ??????????????, если в запросе ставить жесткое условие, т.е. /==, то пустой результат.Более того, убрал условие string('имя МЦ') == KatMc.name и оставил мягкие подцепки - получил около 30000 строк, в которых повторяются эти шесть накладных, а цены и МЦ также выводятся в виде ????????????. Вынес это условие из подцепки - пустой результат :(
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение m0p3e »

Отрабатывай проходы по таблице.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение m0p3e »

Отрабатывай проходы по таблице. Да и сделай фейсом это дело. В формах большой гимор.
ds
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение ds »

TO MOP3E> Оно заработало в том виде, как ты мне присоветовал (только во-первых - условие на имя матценности вынес из подцепки, но это делал и раньше, а во-вторых - свой седьмой первасив чуть-чуть подстроил - увеличил количество сессий) ??? Что помогло сильнее - не знаю. Но работает.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.

Сообщение m0p3e »

;)
Бывает что на простых вещах застриваешь. Я вчера 2 часа убил на то что б понять почему в окне (window) не прорисовывается брауз!!!
Методом тыка правил то одно, то другое. В конце концов заработало. Но вот почему не работало... Это большой вопрос!
forsit
Посетитель
Сообщения: 35
Зарегистрирован: 29 мар 2005, 17:49

Так не пишут!!! :-[

Сообщение forsit »

Ds, делать подцепки на основе текстовых строк НЕЛЬЗЯ если ты хочеш получить что-то пормально работающее. :-[
Ответить