Страница 1 из 2
По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл. на о
Добавлено: 16 апр 2002, 20:05
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
;
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 16 апр 2002, 20:07
ds
Опечатался - выдает пустой результат. А должна быть одна запись.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 16 апр 2002, 20:55
Den
А чего ты подцепки между basedoc-ом,stepdoc-om и katsopr-ом так интересно написал ??
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 17 апр 2002, 13:14
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
;
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 17 апр 2002, 19:26
Vitas
попробуй and katsopr.cstepdoc = stepdoc.nrec
занести в (( )) как
and katsopr.cstepdoc == stepdoc.nrec
Однозначно должно быстрее работать
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 18 апр 2002, 13:35
ds
Не работает, в подцепку нельзя включить данную строку, так как индекс по полям cbasedoc и nrec в таблице stepdoc не создан. Создать я его, не убив таблицы и не покорежив словарь, не могу. Не есть гут.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 18 апр 2002, 15:23
m0p3e
А куда этот индекс делся??? Он же стандартный! Кроме того можно строку не попадающую в выборку пометить как noIndex.
Например
KatSopr.cStepDoc == StepDoc.nrec (noIndex)
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 18 апр 2002, 16:01
ds
Индексов по этой таблице всего четыре:
1. Nrec
2. Cbasedoc
3. ATL_LASTDATE+ATL_LASTTIME
4. ATL_LASTUSER
и все...
а если писать (noindex), все равно выскакивает предупреждение, что нужен индекс по совокупности этих полей и вываливает пустой результат
:`(
А может, совсем по-другому можно запрос написать? Условие выборки в самом начале.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 18 апр 2002, 16:31
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
))
И ты хочешь сказать что в таком виде он у тебя ругается???
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 18 апр 2002, 18:08
ds
Не-а, в таком виде отрабатывает (не работает, если условия местами поменять).
Но выдает батву какую-то. По данной ЛЗК сформировано несколько накладных на отпуск и только в одной из них есть эта МЦ. А я в результате получаю шесть строк (соответствуют сформированным накладным), но вместо цен стоят ??????????????, если в запросе ставить жесткое условие, т.е. /==, то пустой результат.Более того, убрал условие string('имя МЦ') == KatMc.name и оставил мягкие подцепки - получил около 30000 строк, в которых повторяются эти шесть накладных, а цены и МЦ также выводятся в виде ????????????. Вынес это условие из подцепки - пустой результат
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 19 апр 2002, 12:16
m0p3e
Отрабатывай проходы по таблице.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 19 апр 2002, 12:17
m0p3e
Отрабатывай проходы по таблице. Да и сделай фейсом это дело. В формах большой гимор.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 22 апр 2002, 19:08
ds
TO MOP3E> Оно заработало в том виде, как ты мне присоветовал (только во-первых - условие на имя матценности вынес из подцепки, но это делал и раньше, а во-вторых - свой седьмой первасив чуть-чуть подстроил - увеличил количество сессий) ??? Что помогло сильнее - не знаю. Но работает.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Добавлено: 23 апр 2002, 11:07
m0p3e
Бывает что на простых вещах застриваешь. Я вчера 2 часа убил на то что б понять почему в окне (window) не прорисовывается брауз!!!
Методом тыка правил то одно, то другое. В конце концов заработало. Но вот почему не работало... Это большой вопрос!
Так не пишут!!! :-[
Добавлено: 23 апр 2002, 20:51
forsit
Ds, делать подцепки на основе текстовых строк НЕЛЬЗЯ если ты хочеш получить что-то пормально работающее. :-[