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

lvovel

Участник
  • Публикации

    8
  • Зарегистрирован

  • Посещение

Старые поля

  • Регион/город
    Москва

lvovel's Achievements

Участник

Участник (1/8)

-1

Репутация

  1. lvovel

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

    Отвечу сам! Стандартными инструментами никак! Но.... Вывод в отчет любой картинки, хранящейся в БД: Стандартный функционал не предусматривает такую возможность, но мы можем его добавить. Так как редактирование приложения (я имею в виду «Профстрой») нам не доступно мы будем добавлять функционал непосредственно на сервер 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» мне вывод не понравился, коряво формируются параметры тега; Результат вышеописанных манипуляций: 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) добавить код самого отчета.
  2. lvovel

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

    Перефразирую вопрос: В БД есть физическая таблица "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~
  3. Здравствуйте! Подскажите, есть ли возможность вывести в отчет чертеж конструкции без размеров! По конструкции ~SQL1:oPict:Чертеж:width=300:height=240~ выводится с размерами!!!
  4. Возникает вопрос о природе происхождения дефекта, т.е. в какой момент процесса установки конструкции тот дефект был порожден, на производстве или при монтаже!?
  5. Вообще, если приглядеться, нижний штапик немного утоплен к стеклу в районе трещины (стрелки) на 1-1,5 мм относительно плоскости рамы. Можно ли смело утверждать, что был удар по штапику, что послужило появлению вышеописанного артефакта (трещины-стрелки)?
  6. Чайник обнаружен не был!
  7. Ну, для того, чтобы назначить виноватого, нужны основания, вот их-то и хотелось бы найти! Кстати, если все, как Вы говорите, то вина чья?
  8. На глухой створке окна с внутренней стороны пошла трещина приблизительно 15 см из-под штапика из нижнего угла к центру стеклопакета, окно установлено 1 год и 3 месяца назад, т.е. все перепады температур оно уже давно пережило. Видимых следов удара на стеклопакете нет, качество монтажа проверяли - все в порядке. Как определить причину появления трещины на стеклопакете?
×
×
  • Создать...

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

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