Вопрос по FRB

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

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

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

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

Добрый день!

C6-9024 FRB 2.88 (хотя это и не существенно)

Кто использует subj?
Собственно вопросы такие:

1) Можно ли в subj создать отчет такого вида

Печатаем строку 1 TableParent
Печатаем строку 1 TableChild_1
Печатаем строку 1 TableChild_2
Печатаем строку 2 TableChild_2
......
Печатаем строку N TableChild_2
Печатаем строку 2 TableChild_1
...
Ну и т.д.

Т.к. собственно отчеты в subj формируются на основе "единой VIEW", то с первого взгляда - никак, но может как-то можно?

2) Можно ли распечатать отчет из Browse без вызова ReportManager-а?
(т.е. нажал кнопочку и нужный отчет появился), причем перед показом отчета, вываливатся окно, в котором полтьзователь определяет, что печатать (текущую запись, все записи, либо отмеченные). (Для отмеченных записей я пользуюсь продуктом MultyTag - но с этм я постараюсь позже разобраться, если это вообще будет возможно)

С уважением Мартюшев Леонид
mailto:leonid@opfr.komi.com

P.S. Только начал разбираться с subj. Может у кого есть примеры использования subj (легче на примерах освоить, стандартный пример в установке не отвечает на все вопросы, а освоить надо быстро).
Т.к. собственно отчеты в subj формируются на основе "единой VIEW", то с первого взгляда - никак, но может как-то можно?
Надо сделать "Группы сортировки" сначала по связному для первой дочерней таблицы полю родительской таблицы, ее строку в "Заголовке группы 1", затем по связному для второй дочерней таблицы полю первой дочерней таблицы, ее строку в "заголовке группы 2", затем уже в "теле отчета" строку второй дочерней таблицы.

2. Сделать можно практически все, в свое время мы самого Олега удивляли наворотами в отчетах. Для печати отчета без менеджера есть даже шаблончик LaunchRunTimeReport, но несложно и самому сделать, посмотрев сгенереные исходники. Правда получается, что надо каким-либо образом зафиксировать имя файла отчета, что тоже решаемо многочисленными способами. Для печати определенных записей надо их коды сделать доступными в "словаре" отчета, это могут быть глобальные или модульные переменные, можно сделать и локальные переменные, которые в программе будут инициализироваться при входе в процедуру. Можно сделать это и в том случае, когда используется менеджер и отчет запускается в новом потоке, в этом случае немного правим руками вызов, чтобы сделать процедуру отчета с параметрами (строки или группы как строки, см. START), и через параметры передаем опять же нужные значения.
Большую свободу дают описанные в словаре пользовательские процедуры, которые вообще могут делать все, что угодно, например, выдавать для текущей записи информацию, была ли она помечена в вызывающем браузе, тут нужны будут, например, глобальные очереди.
P.S. Только начал разбираться с subj. Может у кого есть примеры использования subj (легче на примерах освоить, стандартный пример в установке не отвечает на все вопросы, а освоить надо быстро).
Был примерчик, записная книжка для хранения семейных расходов. Если еще не убил - постараюсь выложить на кларионлайф. Рабочие программы для примеров тяжелы.

WBR, Igor

Спасибо за информацию. Жду примерчик

С уважением Мартюшев Леонид

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

http://www.softmaster.ru/programs/price/download.shtml

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

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

Леонид,

1) Два варианта решения проблемы "единой VIEW" при наличии в одном отчете двух дочерних таблиц к одной таблице родительской лежит здесь http://www.fomintools.com/cgi-bin/forum ... b?thread=9
Там есть и ссылка на пример, который можно скачать и исследовать.

2) Для запуска отчета по кнопке из Browse есть LaunchRunTimeReport CODE template. Т.е. в ембед "Accepted" этой кнопки можно вставить этот кодовый шаблончик...

3) Разработчик имеет полный контроль над выборкой и фильтрацией записей в RunTimeReport.

Например, на сиквел базе я использую такой подход: при вызове отчета из "Tagged Browse" пробегаю в цикле по очереди с отметками и формирую фильтр-строку переменной длины вида

FRB:View{Prop:SqlFilter}='+A.RecordID IN (1,2,3,5,10)'

В данном случае подразумевается, что отмечены всего пять запичей; 1,2,3,5,10
- это значения поля RecordID (первичного ключа таблицы). "A." - это префикс первой таблицы VIEW (см. логи акселератора). Эту строку присваиваю FRB:View{Prop:SqlFilter}. В отчете получаю только отмеченные записи. Причем фильтрацию ненавязчиво делает SQL сервер. Все это исключительно embedded code, причем абсолютно не сложный. Можно бы легко сделать шаблончик, но уж больно много есть вариаций на тему "Tagged Browse".

Однако на любой базе прокатит такой вот универсальный, но возможно безобразно длинный фильтр:

FRB:View{Prop:Filter}='RecordID=1 OR RecordID=2 OR ...

Однако, если база "не сиквел", то есть смысл сделать выборку GET(File,Key) отмеченных записей в очередь. А отчет FRB выполнил бы из Queue. Так как очередь перед печатью возможно отсортировать в соответствии с SELF.Order конкретного отчета. Пример печати из очереди здесь:
http://www.fomintools.com/PrintFromQueue.app. Указанный APP нужно сохранить в Clarion\Examples\FRB, туда где уже лежат DCT & TPS примеров штатной поставки.

Печать FRB из очереди также весьма привлекательна при использовании одного из вариантов DirectODBC. Скорость выборки на порядок выше, чем у клашиных "акселераторов". Да и есть возможность при необходимости причесать-обработать очередь после выборки перед печатью.

Кстати, клаша тут "не виноватая". Однако эта тема заслуживает отдельного топика (http://clarion.iphosting.ru/ExBB/topic. ... 5&topic=24)...

С уважением,
---
Oleg Fomin oleg@fomin.info
Написал: ClaList(2)
Гость

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

Игорь,
Серьезная работа. Впечатляет.
Одних только отчетов 176 файлов в папочке reports.
И вобще, даже без исходников есть чему поучиться.

Одного не могу взять в толк.
Почему используется версия FRB 1.5b образца 1998 года выпуска?

С уважением,
---
Oleg Fomin
Написал: ClaList(2)
Гость

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

Добрый день!

Да, использую пока драйвер Tps

Олег, спасибо за полный ответ.

Но есть еще вопросы:

1. Я использую продукт MultyTag (разработка В.Якимчено). Продукт на порядок выше всяких там DOS Tag, Handy Marker и т.д., но что-то вы с ним не "снюхались", хотя было бы здорово. Придется использовать вариант печати из очереди, как ты советовал. Вначале сформировать очередь по выделенным данным, а потом... Хотя Володе я еще не писал по этому поводу, может что присоветует

2. Для предпросмотра использую Icetips Previewer 2.1. Как только подключаю возможности импорта в PDF, HTML, TXT идет ругань, типа "No match prototype available" и т.д. Т.к. смотрел пока вчера ночью и пока не разобрался с какого фига это ползет.

3. А почему у тебя не подключена возможность генерации отчетов в XML?

А так продут мне очень понравился, жалко что не приобрели его раньше. С печатью текущей и всех записей, а также с сортитровкой при печати я разобрался: просто делаю перед открытием вьюшки соответсвующие вставки
(это для заранее подготовленных и отчетов). С печатью Parent->Child1->Child2... Вроде бы тоже все понятно, сегодня ночью буду пробовать.

С уважением Мартюшев Леонид
mailto:leonid@opfr.komi.com

P.S. Знаешь, что не хватает: возможности изменения внешнего вида дизайнера (хотелось бы больших возможностей, кроме изменения стилей).
Кстати, а почему бы не вывести стандартное изменения шрифта, не через кнопку, а через DropList? Было бы симпатичней. Дизайнер сразу при приобрел более "проффесиональный" вид (хотя, конечно, у каждого свое представление об этом). Не воспринимай это как какие-то заоблачные требования или некие претензии: просто более "профессиональный" вид приобретет еще большей сооскателей на приобретение продукта (который как я уже писал, того заслуживает). Кстати для делфи сделан неплохой в визуальном представлении генератор отчетов FastReport (http://www.fastreport.ru), чисто для визуализации там можно было бы очень много взять


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

Леонид,

1. Что такое "MultyTag (разработка В.Якимчено)" понятия не имею, сорри.

2. Арнор обещал подправить свой превьювер. Возможно уже это сделал и нужно просто обновиться.

3. XML говоришь... А оно тебе надо?

ЗЫ: Кларион - не Дельфи и не плюсы. Это узкоспециализированный (и не широкоиспользуемый) инструмент, заточенный на решение конкретных задач. Как только начинаешь делать на ём нечто "нестандартное", например WYSWYG редактор отчетов, так... (на этом месте рука по клаве стучать отказывается).
Crystal, L&L, ActiveReports, FastReports, ... Интерфейс и функционал есть у кого передирать. Да и передирать незачем. Идеи они просто в воздухе витают как мухи назойливые. Однако, над каждым из перечисленных продуктов работает серьезная команда разработчиков, есть группа поддержки, дилеры, администраторы, дизайнеры и проч. И они в состоянии покрывать свои издержки, т.к. имеют достаточно широкую базу потребителей. Кларион... Дальше рука опять меня не слушается. Разве что могу повторить слова Андрея Мялина из вчерашнего его личного письма: "Ну нравится мне этот язык...". Кстати, надо бы ему что-то ответить. Человек замахнулся на то, чего до сих пор не смогли сделать сами велосипедисты, чтобы Clarion & SQL звучало как "сладкая парочка".


С уважением,
---
Oleg Fomin oleg@fomin.info

1. Распостраняет Ingasoft - посмотри, стоящая вещь, может где и тебе сгодиться

2. Ok! Бум ждать

3. Да просто решил проверить, обнаружил, что нет, вот и написал. Пока конечно не надо, но а вдруг, кто-то и попросит...

Кстати, пока вплотную не занимался экспортом в XML (имеется в виду из C6.1), но мой коллега столкнулся с тем, что нет возможности генерации XML-файлов с кодировкой Win 1251 (есть только UTF-8, UTF-16 и ISO-8859-1). Может кто-то где-то что-то исправлял? Исправления Сергея Артюшенкова меняют только кодовую страницу, но не саму кодировку XML.
Продукт Агеева мы заказали, но когда выделят денежку - это вопрос.
Однако, над каждым из перечисленных продуктов работает серьезная команда разработчиков, есть группа поддержки, дилеры, администраторы,
дизайнеры и проч. И они в состоянии покрывать свои издержки,
Странно, я что-то думал, что FastReports - это разработка A.Tzyganenko, как написано в Help о Программе (типа он один все тянет)... Ну да бог с ними. А в целом я согласен с твоими рассуждениями
Кстати, надо бы ему что-то ответить. Человек замахнулся на то, чего до сих пор не смогли сделать сами велосипедисты, чтобы Clarion & SQL звучало как
"сладкая парочка".
Это было бы круто. Мы как раз заказали приобрести его продукт

С уважением Мартюшев Леонид

Написал: ClaList(2)
Гость

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

Hello Oleg,
skip...
ЗЫ: Кларион - не Дельфи и не плюсы. Это узкоспециализированный (и не широкоиспользуемый) инструмент, заточенный на решение конкретных задач. Как только начинаешь делать на ём нечто "нестандартное"
Целый месяц(в свободное время, ес-но) честно пытался освоить VS2003( VB.NET).Кошмар какой-то:
  • 1. Отсутствие шаблонов, словаря и убогие визарды. Парни из M$ не придумали ничего лучше Clipbord Ring(!). Приходится таскать через него куски кода и потом править ручками. Типичный пример(это только удаление одной записи в одной таблице):

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

            Try
                'Получаем текущую позицию в ЭКРАННОЙ таблице
                cr = grdTOVAR.CurrentRowIndex
                'и получаем значение первич. ключа (Tovar.Cod)
                ptr = grdTOVAR.Item(cr, 0)
                'находим запись в DataSet по первичному ключу
                mdrTovar = dsTovar.Tables("Tovar").Rows.Find(ptr)
                'и помечаем на удаление
                mdrTovar.Delete()
                'передаем обновление на сервер
                daTovar.Update(dsTovar, "Tovar")
                'подтвердить изменения
                dsTovar.AcceptChanges()
    
            Catch eUpdate As System.Exception
                System.Windows.Forms.MessageBox.Show(eUpdate.Message)
            End Try
    Даже я смог бы написать шаблон по этому куску кода...
    А сейчас если где-то ошибся - твоя ошибка, но никак не авторов из М$.Какие к ним претензии?
    2. Отсутствие иерархического дерева процедур и привязанных к ним точек вставок. В результате получаешь текстовое полотнище в окошке на 1/3 экрана и крутишь колесики у мышки до опупения. Чувстваешь себя не программером, а главным "редактором"
    3. Есть куча примеров работы с БД, но макс с 5-6 таблиц. А попробуй-ка разрулить хотя-бы 50-60 таблиц при таком инструментарии(см. п.1-2)
    4. В качестве генератора отчетов стандартно используется Crystal Reports, но какой-то урезанный.
    5. Все вертится вокруг MS SQL(редко - Access). Но для любого из этих примеров (кроме XML) я за 20 мин делал готовое приложение на Клаше особо не задумываясь и не перелопачивая талмуды по программированию. Зачем? Ведь язык шаблонов предоствляет дополнительный уровень интерфейса и автор шаблона,как правило, делает этот интерфейс вполне понятным. Это не идиотские таблицы свойств и методов что в Дельфи,что в VB6, что в VB.NET
Что понравилось:
  • 1. Относительно легко можно делать приложения ADO.NET. Но как-то не верю, что они будут слишком сложными - все равно весь функционал д.б. на сервере.
    2. Незатейливые приложения для SmartDevice(наладонников)- и опять-таки с синхронизацией БД наладонника с основной базой на нормальном сервере.
    3. FrameWork и идея сборок - этим не удивить. Это изначально было и есть в Oberone. Кстати, у SV-шников мелькало сообщение о бета-версии Clarion 7, заточенного под FrameWork.
    4. Многоязычность, но этим нас тоже не удивить. Это было еще во времена Йенсена и Партнеров (FrontEnd и BackEnd компиляторы).
    5. Фоновая предкомпиляция.(Если где-то ошибся в синтаксисе, сразу подчеркивается проблемное место. Не надо запускать на компиляцию)
"Ну нравится мне этот язык..."

Это выражение остается в силе.


--
Best regards,
morkovin mailto:morkovin@interdacom.ru
Волгоград

Написал: ClaList(2)
Гость

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

Привет
Я тоже "балуюсь" VS2003 и тоже в ужасе. На сях давно не писал, тук купил "VC++.Net для дураков" для освежевания.
Ну, в этом интерфейсе я плаваю как рыба об лёд, жуть, ничего не найдёшь, закралась мысль, хорошо, что клара 16-тиразрядная, негде больному на голову дизайнеру развернуться.
Ещё неприятность: честно передрал пример из книжки, там в первой строке вполне невинная директива
#include "iostream.h"
Ха-ха, теперь iostream.h (и многие другие хедеры) почему-то поставляется без расширения "h"

С уважением, Михаил

Не путайте C, C++ и C# - это 3 разных языка. Суффикс .h - у заголовочников си, в си++ многие заголовочные файлы идут без расширений, но хоть и имеют те же имена, содержимое в них совершенно иное.

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

Вы будете смеяться, но нету файла iostream.h, нету! ни для С, ни для С++, ни для чёрта лысого.

С уважением, Михаил
Написал: ClaList(2)
Ответить