Как показать имя базовой библиотеки и формы в InfoMaker / Powerbuilder? - PullRequest
0 голосов
/ 05 января 2012

Я запускаю InfoMaker для отчетов и хотел бы показать имя базовой формы и базовую библиотеку в самом отчете.Кто-нибудь знает, как это получить?Самая близкая вещь, которую я вижу, - это функция Describe, но она, кажется, работает на один уровень глубже, чем мне нужно.

Ответы [ 3 ]

0 голосов
/ 09 января 2012

В качестве читера вы можете просто жестко закодировать библиотеку и динамически получать объект данных на лету (ваши отчеты не должны менять библиотеки, если они пишутся слишком часто, большинство никогда не делает этого), или забрать его из хранилища данных, в котором перечисленыих из таблицы в базе данных, которая хранит их в одном месте.возьмите объект data и найдите в хранилище данных связанную библиотеку.вам нужно будет поддержать стол, но это должно привести вас в порядок ...

0 голосов
/ 11 января 2012

Если у вас нет доступа к коду для запуска отчетов, вам придется добавить информацию в сам отчет.Я написал бы небольшую программу, которая загружает каждое DataWindow из библиотеки в элемент управления DataWindow, добавляет или обновляет текстовый элемент управления, содержащий необходимую информацию, и сохраняет DataWindow обратно в библиотеку.Когда программа обновляет текст, она должна содержать только текстовое свойство элемента управления, а не позицию, полосу и т. Д. Таким образом, вы можете настроить его так, чтобы он добавлял текст в нужное место для большинства ваших отчетов и для любых, которые вы корректируетерука останется там, где ты их положил.Обязательно сделайте текст достаточно большим, чтобы вместить самую длинную комбинацию форма + библиотека.Вы можете получить синтаксис, необходимый для создания текста, добавив текст в один из отчетов и просмотрев экспортированный синтаксис.Используйте имя для текстового объекта, который не будет конфликтовать с чем-либо существующим в ваших отчетах - что-то длинное и безобразное.

0 голосов
/ 05 января 2012

Если вам нужно отобразить имя библиотеки в InfoMaker во время разработки, я понятия не имею.

Но если вам нужно отобразить имя библиотеки во время выполнения, я бы добавил вычисляемое поле в отчет и установил бы его выражение из кода, который открывает отчет.

Что-то вроде dw.modify("c_lib.expression='" + classname() + "'"), где c_lib - это имя этого вычисляемого поля. Предупреждение, не вызывайте classname() изнутри глобальной функции, так как это приводит к краху PB ...

...