Доброго дня, столкнулся с такой проблемкой:
Пишу глобальную функцию для использования в счетах. необходимо обратиться к атрибуту таблицы 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)...". Можете подсказать как правильно написать, что бы работало обращение к Атрибуту таблицы? спасибо.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.
P.S. Для работы с внешними атрибутами можно также воспользоваться ExtAttr.vih.
Irina_ писал(а):Здравствуйте.
Попробуйте в списке From изменить порядок, а именно:
.. From Spstep, Katmc, Attrnam, Attrval …
И не забываем про Getfirst по нужным таблицам.
P.S. Для работы с внешними атрибутами можно также воспользоваться ExtAttr.vih.
Изменил порядок, проверил getfirst. если использовать все таблицы в getfirst, то не отрабатывает. Мол не отрабатывает с таблицами attrnam и attrval.
подключил #include ExtAttr.vih, нужно ещё что-нибудь в коде прописывать? просто подключил ничего не поменялось)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Здравствуйте.
Странно. Может все-таки не так сделали? 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; в 9 не много устарело. Ну и как #include ExtAttr.Vih - есть аналоги в Static функциях - смотрите в frm ...C_ExtClass\vip\ExtAttrClass\ExtAttrClassInfo.vih - вот его лучше подключить в проект. Они же доступны и в FastReport через CompileVipExpretion(ищите в описанях к патчам).
Что же касается запроса, то лучше вместо кода таблицы писать coKatMc - так наглядней и не нужно помнить какой код какой таблице соответсвует. Для начала попробуйте сапортом выполнить свой запрос. Порядок таблиц и условий в принципе не важен - компилятор разберется, но лучше ему немножко помочь, да и логика кода будет наглядней.
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
));
не помогает)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
Irina_ писал(а):А ВА с указанным именем точно к KatMc?
И значения ВА по тестовым МЦ точно введены?
И еще. Вы привели весь перечень таблиц и условий во view, с которыми работаете, или что- то убрали перед тем, как обратиться на форум?
Ранее я привела несколько вариантов для получения значения ВА. Попробуйте воспользоваться нужным методом из vih.
разобрался, файл с расширением .vip не распознавал русский язык в названии == attrnam.name. создал атрибут, латинскими буквами название записал, и заработало)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
message бы вывел вас на чистую воду. Вообще кодировка файлов должна быть cp866(или почти тоже самое OEM) - ищите редактор с такой - AkePad, Viper, Support, ME и так далее.
Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
Irina_ писал(а):Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
обычный Notepad использую)Да я редко работаю с vip файлами, только пару глобальных функций в программе используем, в основном формы через frm и rtf. что бы не использовать русс. язык я просто через nrec обратился и всё)