Перейти к публикации
forum-okna.ru

Вывод чертежа в отчете ПС4


lvovel

Рекомендованные сообщения

Здравствуйте! Подскажите, есть ли возможность вывести в отчет чертеж конструкции без размеров! По конструкции

~SQL1:oPict:Чертеж:width=300:height=240~ 

выводится с размерами!!!

Ссылка на комментарий
Поделиться на других сайтах


Оконный портал tybet.ru | Подписка на новости | Бесплатные объявления | Наша телега | База оконных знаний | ОНЛАЙН-ВЫСТАВКА



Перефразирую вопрос:

В БД есть физическая таблица "LISTORD". В этой таблице есть поле "BPICT" с типом "blob" (я так понимаю, что в поле хранятся миниатюры, отображающиеся в списке изделий проекта).

 

Конструкцией:

~SQL1:Установить:SELECT * FROM ListOrd WHERE pUnic=:Индекс1.AsInt: ORDER BY oNumb~
~SQL1:Начало~

 

получим данные из вышеупомянутой таблицы...

 

ВНИМАНИЕ ВОПРОС:

Какой конструкцией мне вывести данные(картинку) в отчет из поля "BPICT":

~SQL1:bPict: ???

 

 

P.S. Вот этой конструкцией выводится чертеж:

~SQL1:oPict:Чертеж:width=200:height=200~

Ссылка на комментарий
Поделиться на других сайтах

Отвечу сам! Стандартными инструментами никак! Но....

 

 

 

Вывод в отчет любой картинки, хранящейся в БД:

 

Стандартный функционал не предусматривает такую возможность, но мы можем его добавить. Так как редактирование приложения (я имею в виду «Профстрой») нам не доступно мы будем добавлять функционал непосредственно на сервер Firebird, используя механизм User Defined Functions (UDF), позволяющий писать пользовательские функции на любом компилирующем инструменте разработки (хост-языке). Саму библиотеку нам писать не придется, возьмем готовую и просто подключим необходимую функцию в нашу БД, и потом используем в конструкции запроса в отчете.

 

1. Добавим на сервер библиотеку UDF BlobSaveLoad (функции для загрузки файла в Blob и выгрузки Blob в файл. blobsaveload.zip (47k), 17.01.2007, kdv). Библиотеку берем отсюда:

http://ibase.ru/d_udf.htm. Из скачанного архива необходимо скопировать файл библиотеки blobsaveload.dll в папку «UDF» которая находится в каталоге сервера (пример пути: «C:\Program Files\Firebird\Firebird_[здесь версия сервера]\UDF»). ВНИМАНИЕ! Только для Firebird Win32

 

2. Регистрируем функцию «SaveBLOBToFile» из ранее добавленной библиотеки, которая будет сохранять картинку на диск из поля blob в нашей БД. Для регистрации подключаемся к нашей БД с помощью инструмента управления базой данных (я использую IBExpert) и выполняем скрипт:

 

DECLARE EXTERNAL FUNCTION SAVEBLOBTOFILE
BLOB,
CSTRING(256) CHARACTER SET NONE
RETURNS INTEGER BY VALUE
ENTRY_POINT 'SaveBLOBToFile' MODULE_NAME 'blobsaveload';

 

3. Если версия Вашего сервера меньше Firebird 2.1 тогда придется задекларировать функцию ascii_char() из библиотеки ib_udf .dll, которая присутствует в стандартной поставке сервера. Функция нам понадобится для передачи в запрос символа двоеточия.

Для этого выполним скрипт:

 

DECLARE EXTERNAL FUNCTION ascii_char
INTEGER NULL
RETURNS CSTRING(1) FREE_IT
ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'

 

Двоеточие нам нужно для указания пути сохранения картинки на диск из БД. Простое указание в запросе «с:\», вернет «с\». Почему так, расписывать не буду, как говорит Леонид Каневский из передачи «Следствие вели» - «Впрочем, это уже совсем другая история …».

Если версия Вашего сервера, больше или равно версии 2.1, этот пункт пропускаем!

 

4. Вот и все! Пример конструкции в отчете, которая выведет нам картинку:

 

<TD rowspan="11" width="308" align="center">
~SQL2:Установить:SELECT pUnic||'_'||oNumb||'.bmp' IMG_PATH, SAVEBLOBTOFILE(bPict, 'C'||ascii_char(58)||'\ProfSegment\Profstroy4\TMP\'||pUnic||'_'||oNumb||'.bmp') SAVE_IMG FROM ListOrd WHERE (pUnic=:SQL1pUnic.AsInt:)AND(oNumb=:SQL1oNumb.AsInt:)~
~SQL2:Начало~
<img src="~SQL2:IMG_PATH:AsString~" width=150 height=150 alt="~SQL2:IMG_PATH:AsString~">
~SQL2:Конец~
</TD>

 

Пример реальный из стандартного отчета «Коммерческое предложение» («Профстрой4»)

Описание конструкции:

  • выполняем запрос;
  • в результате запроса 2 поля: IMG_PATH и SAVE_IMG;
  • IMG_PATH – содержит название-идентификатор сохраненного файла картинки на диск, будем использовать как ссылку с теге <img>;
  • SAVE_IMG – результат сохранения картинки из БД на диск;
  • выводим картинку через тег <img>, через конструкцию «:AsImage» мне вывод не понравился, коряво формируются параметры тега;

Результат вышеописанных манипуляций:

 

post-87944-0-37738200-1429003774_thumb.jpg

 

 

 

 

P.S. Если у вас версия «Профстрой» не предусматривает функционал добавления и редактирования отчетов (например дилерская версия), можно добавить отчет с помощью инструмента управления базой данных (IBExpert), выполнив скрипт или вручную.

 

Скрипт пример добавления отчета:

 

INSERT INTO DOCUMNL (DPORN, DFORM, DNAME, DUNIC, DPROP, DTEXT, DHTML, DGRUP, DILER, DPREF, DCNTP, DREMA, DVIEW) VALUES (145, 'проект', 'Коммерческое предложение для клиента', 145, '', NULL, 'HTML', '', 1, 'ОБЩАЯ', -1, 0, NULL);

 

Значение [145] в скрипте должно быть уникально в пределах таблицы DOCUMNL.

Далее необходимо в поле DTEXT (это текстовый blob) добавить код самого отчета.

Изменено пользователем lvovel
Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

Условия и правила использования форума Правила.