Страница 1 из 2
create view в Глобальной функции
Добавлено: 29 сен 2017, 16:25
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)...". Можете подсказать как правильно написать, что бы работало обращение к Атрибуту таблицы? спасибо.
Re: create view в Глобальной функции
Добавлено: 29 сен 2017, 17:15
Irina_
Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.
P.S. Для работы с внешними атрибутами можно также воспользоваться ExtAttr.vih.
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 11:04
Espada
Irina_ писал(а):Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.
P.S. Для работы с внешними атрибутами можно также воспользоваться ExtAttr.vih.
Изменил порядок, проверил getfirst. если использовать все таблицы в getfirst, то не отрабатывает. Мол не отрабатывает с таблицами attrnam и attrval.
подключил #include ExtAttr.vih, нужно ещё что-нибудь в коде прописывать? просто подключил ничего не поменялось)
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 11:46
pk
Индекс ATTRVAL3 с другим порядком полей - WTABLE, CREC, CATTRNAM.
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 13:07
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();
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 14:04
edward_K
Var var1 : iExtAttr; в 9 не много устарело. Ну и как #include ExtAttr.Vih - есть аналоги в Static функциях - смотрите в frm ...C_ExtClass\vip\ExtAttrClass\ExtAttrClassInfo.vih - вот его лучше подключить в проект. Они же доступны и в FastReport через CompileVipExpretion(ищите в описанях к патчам).
Что же касается запроса, то лучше вместо кода таблицы писать coKatMc - так наглядней и не нужно помнить какой код какой таблице соответсвует. Для начала попробуйте сапортом выполнить свой запрос. Порядок таблиц и условий в принципе не важен - компилятор разберется, но лучше ему немножко помочь, да и логика кода будет наглядней.
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 14:14
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
));
не помогает)
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 17:45
Espada
как я понимаю проблема именно со строками
Код: Выделить всё
1411 == attrnam.wtable and
'Основная МЦ' == attrnam.name and
1411 == attrval.wtable and
проверяю spstep.nrec и katmc.nrec, у них есть значение, а проверяю attrnam.nrec и attrval.nrec, Они уже пустые...
Re: create view в Глобальной функции
Добавлено: 02 окт 2017, 18:55
edward_K
Видимо наименование ва не то- проверьте ещё раз
Re: create view в Глобальной функции
Добавлено: 03 окт 2017, 13:42
Espada
edward_K писал(а):Видимо наименование ва не то- проверьте ещё раз
Да нет, копировал из галактики, не работает...
Re: create view в Глобальной функции
Добавлено: 03 окт 2017, 14:24
Irina_
А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
Re: create view в Глобальной функции
Добавлено: 03 окт 2017, 16:21
Espada
Irina_ писал(а):А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
разобрался, файл с расширением .vip не распознавал русский язык в названии == attrnam.name. создал атрибут, латинскими буквами название записал, и заработало)
Re: create view в Глобальной функции
Добавлено: 03 окт 2017, 19:12
edward_K
message бы вывел вас на чистую воду. Вообще кодировка файлов должна быть cp866(или почти тоже самое OEM) - ищите редактор с такой - AkePad, Viper, Support, ME и так далее.
Re: create view в Глобальной функции
Добавлено: 04 окт 2017, 10:52
Irina_
Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
Re: create view в Глобальной функции
Добавлено: 04 окт 2017, 11:44
Espada
Irina_ писал(а):Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
обычный Notepad использую)Да я редко работаю с vip файлами, только пару глобальных функций в программе используем, в основном формы через frm и rtf. что бы не использовать русс. язык я просто через nrec обратился и всё)
ну и работает вроде)