По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл. на о
Модераторы: m0p3e, edward_K, Модераторы
По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл. на о
Не работает запрос, выдает простой результат. Не могу понять, в чем дело, все строковые переменные верны (таскал из буфера).
Цель запроса - определить рублевую и валютную цены в накладной на отпуск в производство по Номеру и дате ЛЗК и наименованию МЦ.
Скажите, пожалуйста, где я не прав?
____________________________________________
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
;
Цель запроса - определить рублевую и валютную цены в накладной на отпуск в производство по Номеру и дате ЛЗК и наименованию МЦ.
Скажите, пожалуйста, где я не прав?
____________________________________________
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: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Опечатался - выдает пустой результат. А должна быть одна запись.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
А чего ты подцепки между basedoc-ом,stepdoc-om и katsopr-ом так интересно написал ??
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
В каком смысле странно? А запрос чуточку исправленный заработал. Но уж больно медленно, 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
;
Вот тот медленно работающий запрос. Как бы его ускорить?
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: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
попробуй and katsopr.cstepdoc = stepdoc.nrec
занести в (( )) как
and katsopr.cstepdoc == stepdoc.nrec
Однозначно должно быстрее работать
занести в (( )) как
and katsopr.cstepdoc == stepdoc.nrec
Однозначно должно быстрее работать
Ищу возможности довести и так отличный продукт до еще большего блеска
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Не работает, в подцепку нельзя включить данную строку, так как индекс по полям cbasedoc и nrec в таблице stepdoc не создан. Создать я его, не убив таблицы и не покорежив словарь, не могу. Не есть гут.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
А куда этот индекс делся??? Он же стандартный! Кроме того можно строку не попадающую в выборку пометить как noIndex.
Например
KatSopr.cStepDoc == StepDoc.nrec (noIndex)
Например
KatSopr.cStepDoc == StepDoc.nrec (noIndex)
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Индексов по этой таблице всего четыре:
1. Nrec
2. Cbasedoc
3. ATL_LASTDATE+ATL_LASTTIME
4. ATL_LASTUSER
и все...
а если писать (noindex), все равно выскакивает предупреждение, что нужен индекс по совокупности этих полей и вываливает пустой результат
:`(
А может, совсем по-другому можно запрос написать? Условие выборки в самом начале.
1. Nrec
2. Cbasedoc
3. ATL_LASTDATE+ATL_LASTTIME
4. ATL_LASTUSER
и все...
а если писать (noindex), все равно выскакивает предупреждение, что нужен индекс по совокупности этих полей и вываливает пустой результат
:`(
А может, совсем по-другому можно запрос написать? Условие выборки в самом начале.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
((
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
))
И ты хочешь сказать что в таком виде он у тебя ругается???
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: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Не-а, в таком виде отрабатывает (не работает, если условия местами поменять).
Но выдает батву какую-то. По данной ЛЗК сформировано несколько накладных на отпуск и только в одной из них есть эта МЦ. А я в результате получаю шесть строк (соответствуют сформированным накладным), но вместо цен стоят ??????????????, если в запросе ставить жесткое условие, т.е. /==, то пустой результат.Более того, убрал условие string('имя МЦ') == KatMc.name и оставил мягкие подцепки - получил около 30000 строк, в которых повторяются эти шесть накладных, а цены и МЦ также выводятся в виде ????????????. Вынес это условие из подцепки - пустой результат
Но выдает батву какую-то. По данной ЛЗК сформировано несколько накладных на отпуск и только в одной из них есть эта МЦ. А я в результате получаю шесть строк (соответствуют сформированным накладным), но вместо цен стоят ??????????????, если в запросе ставить жесткое условие, т.е. /==, то пустой результат.Более того, убрал условие string('имя МЦ') == KatMc.name и оставил мягкие подцепки - получил около 30000 строк, в которых повторяются эти шесть накладных, а цены и МЦ также выводятся в виде ????????????. Вынес это условие из подцепки - пустой результат
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Отрабатывай проходы по таблице.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Отрабатывай проходы по таблице. Да и сделай фейсом это дело. В формах большой гимор.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
TO MOP3E> Оно заработало в том виде, как ты мне присоветовал (только во-первых - условие на имя матценности вынес из подцепки, но это делал и раньше, а во-вторых - свой седьмой первасив чуть-чуть подстроил - увеличил количество сессий) ??? Что помогло сильнее - не знаю. Но работает.
Re: По №, дате ЛЗК и наимен. МЦ нахожу цену из соотв. накл.
Бывает что на простых вещах застриваешь. Я вчера 2 часа убил на то что б понять почему в окне (window) не прорисовывается брауз!!!
Методом тыка правил то одно, то другое. В конце концов заработало. Но вот почему не работало... Это большой вопрос!
Так не пишут!!! :-[
Ds, делать подцепки на основе текстовых строк НЕЛЬЗЯ если ты хочеш получить что-то пормально работающее. :-[