create view в Глобальной функции

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

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

Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: create view в Глобальной функции

Сообщение Espada »

сейчас у меня есть рабочая create view, но из-за noindex она довольна долго отрабатывает. можно ли как-нибудь их обойти?

Код: Выделить всё

Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  word(1411) == attrnam.wtable (noindex) and
  '281474976710823' == attrnam.nrec and
  word(1411) == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrnam.nrec == attrval.cattrnam and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: create view в Глобальной функции

Сообщение m0p3e »

Если обращение все равно по nrec, то зачем нужно attrnam тащить в выборку?
И зачем сам nrec в кавычках? лишнее преобразование.

Код: Выделить всё

Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  281474976710823 == attrval.cattrnam and
  coKatMc == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: create view в Глобальной функции

Сообщение Espada »

m0p3e писал(а):Если обращение все равно по nrec, то зачем нужно attrnam тащить в выборку?
И зачем сам nrec в кавычках? лишнее преобразование.

Код: Выделить всё

Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  281474976710823 == attrval.cattrnam and
  coKatMc == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
Послушал мнению людей, и понял что использовать обычный текстовый редактор не очень здорово) поставил Vip. Переписал Create view, избавился от одного из noindex

Код: Выделить всё

Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  word(1411) == attrnam.wtable  and
  'Основная МЦ' == attrnam.name and
  word(1411) == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrnam.nrec == attrval.cattrnam and
  attrval.vcomp == hdr_ps.cizd (noindex) and
  word(1) == HDR_PS.ACTIVE(noindex)
));   
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
не совсем понял ваш вопрос.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: create view в Глобальной функции

Сообщение m0p3e »

Если известно значение поля cTypeIzd (видимо ссылка на тип изделия?), то добавление его в выборку позволит избавиться от второго noIndex.
У меня большое подозрение, что cTypeIzd = cgKau_KatMc = 4.

И word(1411) все-таки замените на coKatMc. Глаз режет. :)
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: create view в Глобальной функции

Сообщение Irina_ »

Попробуйте для hdr_ps только условия:
and cgKau_KatMc == hdr_ps.cTypeIzd
and attrval.vcomp == hdr_ps.cizd
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: create view в Глобальной функции

Сообщение Espada »

Irina_ писал(а):Попробуйте для hdr_ps только условия:
and cgKau_KatMc == hdr_ps.cTypeIzd
and attrval.vcomp == hdr_ps.cizd
Спасибо) работает)
Последний раз редактировалось Espada 04 окт 2017, 15:59, всего редактировалось 1 раз.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: create view в Глобальной функции

Сообщение Den »

Espada писал(а): Спасибо) работает) только я не знаю почему) можете в двух словах рассказать в чём смысл этих строчек?)
Погуглите что то вроде "зачем нужны индексы для таблиц баз данных".
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: create view в Глобальной функции

Сообщение Irina_ »

Возможно не совсем корректно напишу, но надеюсь, что суть будет понятна.
В Support открываете карточку таблицы. Внизу есть закладки: «Поля», «Индексы», «Флаги», «Ссылки». На закладке «Индексы» указан перечень и состав индексов к выбранной таблице, заложенный разработчиками. В соответствии с нужным в конкретном случае индексом происходит работа с таблицей: идет поиск, строятся отчеты, делается экспорт и т. д. Когда Вы пишите view, Вы указываете условия на значения полей нужных таблиц. И вот для каких полей надо наложить условия и какие условия — надо смотреть на перечень доступных индексов и состав их сегментов. В Вашем случае Вам обязательно нужно было условие на МЦ (hdr_ps.cizd). Т.о. Вам надо посмотреть индексы к таблице Hdr_ps, в качестве сегмента у которых используется Cizd, и дополнительные условия надо указывать на ВСЕ поля, которые указаны в качестве сегментов до нужного Вам сегмента. Вам может подойти например индекс HDR_PS05: cTypeIzd + cIzd + Vid. Значит Вы должны указать дополнительно условие на cTypeIzd. Если между 1 сегментом и нужным Вам сегментом есть сегменты, на которые условия не наложить, то можете получить проблему при компиляции. Один из способов решения проблемы — указать на каких-то условиях (Noindex), что повлияет на скорость работы запроса. А вот второй способ решения — указать условия на все сегменты до нужного Вам. Значение cTypeIzd можно было как минимум подсмотреть при просмотре таблицы, запросом, в KauConst.inc. Если бы поле принимало разные значения, то надо было анализировать дополнительно. Например, при работе с Katsopr, если Вам надо работать только с определенными документами (приходные накладные/ расходные накладные/…), то Вы задаете условие на Katsopr.Vidsopr, а нужное значение задаете при дополнительном анализе (например по Ctrl + F4, стоя на нужном документе, или в Katdoc.inc)
P.S. Во view на некоторые таблицы можно и не накладывать условия, а задавать их непосредственно при поиске в такой таблице ( Getfirst, Getlast, ...) - в условии Where ((…)). Подозреваю, что на меня могут наброситься за такое )))
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: create view в Глобальной функции

Сообщение edward_K »

Могут. Поскольку если посмотреть профайлером это приводить к выполнению отдельных хранимок.
rmozgov
Сообщения: 7
Зарегистрирован: 09 июн 2016, 14:34
Откуда: Минск

Re: create view в Глобальной функции

Сообщение rmozgov »

Espada писал(а):
Irina_ писал(а):Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
обычный Notepad использую)Да я редко работаю с vip файлами, только пару глобальных функций в программе используем, в основном формы через frm и rtf. что бы не использовать русс. язык я просто через nrec обратился и всё)

Код: Выделить всё

  '281474976710823' == attrnam.nrec and
ну и работает вроде)
Проблема с кодировкой. Необходимо компилировать в OEM кодировке.
Ответить