От начинающего шаблонописателя

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Подскажите, пожалуйста как в шаблоне выбрать поле из входящих в первичный ключ

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

     #BOXED('Связь между уровнями')
       #PROMPT('ID-поле:',COMPONENT(%PrimaryKey)),%IdField,REQ
        #PROMPT('&Child Field:',FIELD(%Primary)),%ChildField,REQ
        #PROMPT('&Parent Field:',FIELD(%Primary)),%ParentField,REQ
      #ENDBOXED
На #PROMPT('ID-поле:',COMPONENT(%PrimaryKey)),%IdField,REQ при попытке выбора получаю сообщение: Need to specify a parent for this item first. Ну и как ему to specify a parent ?

Марина

(Добавление)

Контекст-то какой?
Т.е.:
- что за шаблон - #CONTROL/#CODE/#EXTENSION ?
- шаблон сам по себе, или "цепляется" к какому-либо родителю? К примеру - к бровзу или форме?

Что-бы использовать %PrimaryKey, должен быть определен/доступен/зафиксирован %Primary-файл.
Т.е., грубо-говоря, вышеописанный шаблонный код применим, в основном, в сочетании с родительским шаблоном типа Browse/Form/Report или другим с заголовочным аттрибутом PRIMARY.

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

Здравствуйте, Олег
Шаблон определен так:

#CONTROL(SingleFileTree,'Single File Tree ListBox'), PRIMARY('Single FileTree ListBox',OPTKEY),DESCRIPTION('Структура дерева для '&%Primary),MULTI,WINDOW CONTROLS

LIST,AT(,,150,100),USE(?FileTree),FORMAT('800Lt@s200@'),FROM(Queue:SingleFileTree),MSG('Структуры')
END
Соответственно, выбор FIELD(%Primary) и KEY(%Primary) проходят нормально, а на COMPONENT(%PrimaryKey) ругается.

С уважением, Марина.

(Добавление)

Попробуй перед этим кодом поставить что-то типа:

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

#PREPARE
  #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  #FIX(%File,%Primary)
#ENDPREPARE
И, если не поможет, то использовать косвенную ссылку на Primary-ключ:

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

#BOXED('')
  #PROMPT('Ключ-ссылка на поле ID:',KEY(%Primary)),%ChildKey,REQ,DEFAULT(%PrimaryKey)
  #PROMPT('Поле-ссылка на поле ID:',COMPONENT(%ChildKey)),%ChildField,REQ
#ENDBOXED
По крайней мере, у меня подобные конструкции нормально работают.

=============================
С уважением, Олег А. Руденко

Здравствуйте, Олег.
Второй способ у меня заработал, но хотелось бы узнать, что при первом я делаю не так. Если не сложно, посмотрите, пожалуйста, attach.

С уважением, Марина.

(Добавление)

Скорее всего, из на наличия атрибута OPTKEY (ключ можно не задавать), ключ не был задан и соотв. %PrimaryKey либо пуст, либо не существует.

WBR, Nick Tsigouro. MailTo:Nick@arsis.ru


(Добавление)

Спасибо, Nick. Меня ввело в заблуждение название %PrimaryKey и один чужой шаблон, из которого я взяла этот кусок. А это, оказывается, The label of the access key for the primary file, а совсем не PrimaryKey.

С уважением, Марина.
Написал: ClaList(2)
Гость

Сообщение Гость »

%PrimaryKey следует читать как %Primary <->> Key И так везде.

WBR, Nick Tsigouro
Написал: ClaList(2)
Гость

Сообщение Гость »

Возможно, следовало использовать %FilePrimaryKey?

--
Mit freundlichen Gruessen
Dr. math. Valentin Babaev
Aerztekammer Schleswig-Holstein
Bismarckallee 8 - 12
23795 Bad Segeberg
mailto:babaev@aeksh.org
Написал: ClaList(2)
Гость

Сообщение Гость »

Да, это как раз то, что я хотела, спасибо.

С уважением, к.ф.-м.н., Марина Абросимова
mailto: parus@ufacom.ru

Но тогда нужно предварительно каким-либо образом за-#FIX-ировать %File. В данном случае, наверно так:

#PREPARE !# Поскольку мы в периоде проектирования, а #FIX - оператор

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

периода
гегнерации.
#FIX(%File,%PrimatyFile)
#ENDPREPARE
WBR, Nick Tsigouro
Написал: ClaList(2)
Гость

Сообщение Гость »

Добрый день.

Я делаю #PREPARE
#FIX(%File,%Primary)
А %PrimatyFile что-то в Help'e не нашла.

С уважением, Марина

Все правильно. Это я перестарался ;)

WBR, Nick Tsigouro
Написал: ClaList(2)
Ответить