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

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

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

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

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

Сообщение Espada »

Доброго дня, столкнулся с такой проблемкой:
Пишу глобальную функцию для использования в счетах. необходимо обратиться к атрибуту таблицы katmc. Сделал как обычно:

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

Create view 
from katmc, attrnam, attrval, spstep
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  word(1411) == attrnam.wtable and
  'Основная МЦ' == attrnam.name and
  attrnam.nrec == attrval.cattrnam and
  word(1411) == attrval.wtable and
  katmc.nrec == attrval.crec 
));
но не хочет работать, опытным путём выяснил, что проблема именно в строках " word(1411)...". Можете подсказать как правильно написать, что бы работало обращение к Атрибуту таблицы? спасибо.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Irina_
Местный житель
Сообщения: 546
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

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

Сообщение Irina_ »

Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.

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

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

Сообщение Espada »

Irina_ писал(а):Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.

P.S. Для работы с внешними атрибутами можно также воспользоваться ExtAttr.vih.
Изменил порядок, проверил getfirst. если использовать все таблицы в getfirst, то не отрабатывает. Мол не отрабатывает с таблицами attrnam и attrval.
подключил #include ExtAttr.vih, нужно ещё что-нибудь в коде прописывать? просто подключил ничего не поменялось)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
pk
Постоянный обитатель
Сообщения: 135
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва Связьтранснефть

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

Сообщение pk »

Индекс ATTRVAL3 с другим порядком полей - WTABLE, CREC, CATTRNAM.
С ув..
Irina_
Местный житель
Сообщения: 546
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

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

Сообщение Irina_ »

Здравствуйте.
Странно. Может все-таки не так сделали? NrecSpStep определен? Правильно ли ввели наименование внешнего атрибута в запросе? А какой тип значения нужного Вам внешнего атрибута (строка, ссылка и т. д.)? Для хранения значений ВА разных типов в AttrVal используются разные поля. Если ссылка на МЦ, то следует использовать синоним для нахождения значения внешнего атрибута.
Если в Вашем запросе используются и другие таблицы помимо приведенных и надо находить значения ВА более чем к одной таблице, то надо использовать синонимы к AttrVal или нахождение в Attrval оформить как ф-цию, в которую передавать код таблицы, наименование ВА, Nrec записи, к которой искать ВА.

Var nrec_ : Comp;

NrecSpStep:= SpStep.Nrec;
nrec_:= Comp(0);
If Getfirst KatMc = tsOk
If Getfirst Attrnam = tsOk
If Getfirst Attrval = tsOk
{
nrec_:= Attrval.Vcomp; // тип Comp
// далее по найденной ссылке искать инфо по основной МЦ
}

А для работы с *.vih просто подключения недостаточно. Надо определить переменную нужного типа и использовать методы с этой переменной. В ExtAttr.vih выберите нужный Вам метод в соответствии с типом ВА.
Например, если нужный Вам ВА к таблице KatMc имеет тип Comp, то:

Var var1 : iExtAttr;
nrec_ : Comp;
nrec_:= var1.coGetAttr( Word(1411), SpStep.Cmcusl, 'Основная МЦ');

Или
Var nrec_ : Comp;
InitServTXO(0);
nrec_:= coTXOGetExtAttr( KatMc, 'Основная МЦ', SpStep.Cmcusl );
...
DoneSetvTXO();
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

Var var1 : iExtAttr; в 9 не много устарело. Ну и как #include ExtAttr.Vih - есть аналоги в Static функциях - смотрите в frm ...C_ExtClass\vip\ExtAttrClass\ExtAttrClassInfo.vih - вот его лучше подключить в проект. Они же доступны и в FastReport через CompileVipExpretion(ищите в описанях к патчам).
Что же касается запроса, то лучше вместо кода таблицы писать coKatMc - так наглядней и не нужно помнить какой код какой таблице соответсвует. Для начала попробуйте сапортом выполнить свой запрос. Порядок таблиц и условий в принципе не важен - компилятор разберется, но лучше ему немножко помочь, да и логика кода будет наглядней.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

pk писал(а):Индекс ATTRVAL3 с другим порядком полей - WTABLE, CREC, CATTRNAM.
Так:

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

Create view
from spstep, katmc, attrnam, attrval
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
));
не помогает)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

как я понимаю проблема именно со строками

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

  1411 == attrnam.wtable and
  'Основная МЦ' == attrnam.name and
  1411 == attrval.wtable and
проверяю spstep.nrec и katmc.nrec, у них есть значение, а проверяю attrnam.nrec и attrval.nrec, Они уже пустые...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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

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

Сообщение Espada »

edward_K писал(а):Видимо наименование ва не то- проверьте ещё раз
Да нет, копировал из галактики, не работает...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Irina_
Местный житель
Сообщения: 546
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

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

Сообщение Irina_ »

А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

Irina_ писал(а):А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
разобрался, файл с расширением .vip не распознавал русский язык в названии == attrnam.name. создал атрибут, латинскими буквами название записал, и заработало)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

message бы вывел вас на чистую воду. Вообще кодировка файлов должна быть cp866(или почти тоже самое OEM) - ищите редактор с такой - AkePad, Viper, Support, ME и так далее.
Irina_
Местный житель
Сообщения: 546
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

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

Сообщение Irina_ »

Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

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

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

  '281474976710823' == attrnam.nrec and
ну и работает вроде)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить