Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FastReport

Автор: GeXamin
Дата сообщения: 23.08.2011 08:26
А что мешает растянуть MasterData_1 на всю страницу, и вставить два одинаковых поля - на пол страницы кождое.
Автор: Vertimina
Дата сообщения: 23.08.2011 10:34
Добавлять 2 мастер дата не получается. Структура у бланка такая: ReportTitle, ColumnHeader, MasterData, ColumnFooter. Я не могу вторую мастер дату вниз вставить, что бы таблица не разъехалась.
Автор: druff
Дата сообщения: 24.08.2011 09:58
Vertimina
Вопрос интересный.. Коллега как-то решил очень тупым методом. Поместил в нижнюю часть такие же компоненты, и для каждого бланка скриптом заполнял нижнюю часть, копируя значения из верхней.
Автор: Vertimina
Дата сообщения: 24.08.2011 10:54
Спасибо за подсказку. Заполнение скриптом отчасти помогло, только нижняя таблица в которую копируются данные по размеру колонок, по их высоте не совпадает, сильно растягивается и много пустого места остается. Может еще кто сталкивался с подобным, скажите как решили?
Автор: druff
Дата сообщения: 24.08.2011 13:17
Vertimina
В качестве успокоения - скажу, что с большой вероятностью эта задача может мутировать в другую.. Когда верхняя и нижняя часть совпадают, скажем.. на 90-99% а остальные 1-10% разные. Если так, то и время вы не зря потратили - в будущем понадобиться меньше работы на модификацию шаблона.
Автор: ArhBes
Дата сообщения: 13.09.2011 15:39
Уже все перепробовал, ничего не получается, и возможно ли такое сделать:
Как сделать отчет, диаграмму вот такой формы:
Есть запрос который достает такие данные
|--------------------------------------------|
|Дата и время| Кассовый аппарат| ФИО|
==========================
| 11.09.2011 08:07:45| Касса 1| Иванов |
| 11.09.2011 11:19:37| Касса 1| Иванов |
| 12.09.2011 20:47:58 | Касса 2| Сидоров |
Нужно по оси X разложить даты от начала до конца может быть большой период (тоесть нужно автоматическое масштабирование), и каждая линия (например другого цвета это фамилия человека), но вот проблема что одна запись это один чек и как указать что отображать по оси y?
Нужен график развития процесса во времени (количество чеков) и чем , больше чеков тем выше график по y, меньше ниже.
Возможно, нужно переписать запрос и как-то посчитать коэффициент?
Запрос простой, с одной таблицы достаю данные
SELECT DATA, FIO
FROM DOCUMENT D
WHERE D.DATA >= :SDATA AND FDATA <= D.DATA
Автор: mmlm10
Дата сообщения: 13.09.2011 19:13
ArhBes
Если нужна динамика по количеству чеков у человека, то примерно так:
SELECT D.DATA, D.FIO, SUM(D.[кол-во_чеков])
FROM DOKUMENT D
WHERE D.DATA >= :SDATA AND D.DATA < :FDATA
GROUP BY D.DATA, D.FIO
и по оси Y откладывать значение суммы (третье поле),
если просто по датам - поле FIO из запроса выкинуть
Автор: GeXamin
Дата сообщения: 18.10.2011 08:54
Всем привет. Назрела проблема, если где обсуждалось - ткните.
Имеется D2010+ODAC+Oracle. Дело вот в чем, стал вопрос о расширеных подписях в Fast'e, раньше просто все забивалось руками. Теперь необходимо доставать все из справочника - вставил имя переменной, а Fast подхватит значение. Решение видится следующее: завести справочник типа (имя переменной, значение, комментарий), написать свою функцию, которая будет доставать значение по переменной.
Может есть еще какие идеи? Спс.
Автор: rrromano
Дата сообщения: 18.10.2011 17:21
GeXamin
1. Вы бы объяснили на более понятном и высоком уровне, для чего это.
2. Обратите внимание, в исходниках ODAC есть папка Demos\Win32\ThirdParty\FastReport\FR4\ - мне очень пригодилось. Это если хотите в рантайме подхватывать активную сессию из приложения и динамически строить всяческие запросы. Тогда у вас получается прямой доступ к справочнику из отчёта.
Автор: GeXamin
Дата сообщения: 19.10.2011 00:14
1. Имеется пара десятков отчётов, суть их не имеет значения. В каждом присутствуют в конце "подписи" типа "Директор ______________ / Иванов И.И. /". Сейчас это все забито в статике руками. Хочется динамически из справочника, чтоб менять в одном месте и не лопатить все отчёты.
2. Это пользую, тело отчёта лежит в базе. В проге , через дизайнер создаю, меняю.

Все веду к тому, что юзер делает все сам. В справочник добавил переменную "Name", значение "Новая переменная", в отчет кинул что-то вроде [Name], а на печать ушло Новая переменная.

Что-то типа переменных, но чтоб на автомате из справочника, а не пересобирать приложение с передачей новой переменной в отчёт. Как-то так.
Автор: YuriyRR
Дата сообщения: 19.10.2011 00:51
GeXamin

Цитата:
Что-то типа переменных


Подгрузка из словаря
REP_VARS - variable dictionary

procedure LoadVariables_to_FR(LREP: TfrxReport);
var
i: integer;
begin
LREP.Variables.Clear;
LREP.Variables[' Глобальные переменные'] := Null;
for i := 0 to REP_VARS.Count - 1 do
begin
LREP.Variables[REP_VARS.GetKeyByIndex(i)] :=
AnsiQuotedStr(VarToStr(REP_VARS.ReadVariable(REP_VARS.GetKeyByIndex(i))), '''');
end;
end;
Автор: GeXamin
Дата сообщения: 19.10.2011 08:27
YuriyRR
Собственно это один из двух вариантов, о которых я думал:
- передача всех переменных.
- наваять свою фнкцию для Фаста, подтягивающую значение.

Сомневался на счёт первого, но теперь задумался - ведь так прямо в редакторе будет виден список переменных.
Автор: rrromano
Дата сообщения: 19.10.2011 09:34

Цитата:
1. Имеется пара десятков отчётов, суть их не имеет значения. В каждом присутствуют в конце "подписи" типа "Директор ______________ / Иванов И.И. /". Сейчас это все забито в статике руками. Хочется динамически из справочника, чтоб менять в одном месте и не лопатить все отчёты.


Значит, так. Я такое делал следующим образом:
1. Справочник (или несколько) должностей и сотрудников в базе данных.
2. В каждом отчёте при его запуске в диалоговом окошке параметров отчёта есть пара лукапкомбобоксов, связанных с запросами из этих справочников (посредством использования одаковского примера для фастрепорта).
3. Пользователь при формировании сам выбирает единожды сотрудника, который сохраняется в реестр/ини файл и при следующем запуске автоматически подтягивается в поле.

Никаких переменных, всё просто как для меня, так и для пользователя.
Автор: GeXamin
Дата сообщения: 19.10.2011 10:09

Цитата:
Пользователь при формировании сам выбирает единожды сотрудника, который сохраняется в реестр/ини файл и при следующем запуске автоматически подтягивается в поле.
т.е. с отчётом нужно тягать обязательно файл с настройками?

Автор: rrromano
Дата сообщения: 19.10.2011 11:31

Цитата:
т.е. с отчётом нужно тягать обязательно файл с настройками?


Зачем тягать? Он сам создастся. При переносе на другой комп просто заново придётся выбрать пару человек. А если так уж критично - можно зафиксировать выбор на уровне БД, в которой и хранить для каждого отчёта перечень параметров. Даже сам отчёт можно в блоб запихнуть.

Лично я делаю хранение настроек программ в ини-файлах - портабельно и просто. И когда переношу программу - могу и файлик ини дополнительно перенести.
Есть вариант с хранением настроек в профилях пользователей - тогда сложнее, но тоже не проблема.
Автор: GeXamin
Дата сообщения: 19.10.2011 14:33
rrromano
Идею понял. Спасибо всем.
Автор: MagistrAnatol
Дата сообщения: 21.11.2011 15:14
Народ, как очистить подготовленный отчет в frxPreview?
Автор: wasilissk
Дата сообщения: 22.11.2011 20:43
Имеются три таблицы
Мастер:
Заказы(ID, NAME)

Детали:
Материал(ID, ORDER_ID, NAME, WIDTH, LENGTH)
Обработка(ID, ORDER_ID, NAME)
Структура надуманная, важно различное количество смысловых колонок. (NAME, WIDTH, LENGTH в первом; NAME во втором случаях).

Необходимо сформировать отчет, типа

Код:
Вывеска

Материал:
Пластик 12 13
ЛДСП 14 23

Обработка:
Фрезеровка
Обрезка

Баннер

Материал:
Фанера 23 55

Обработка:
Кромление
Покраска
Автор: GloThin
Дата сообщения: 22.11.2011 21:29
MagistrAnatol

Цитата:
Народ, как очистить подготовленный отчет в frxPreview?

Может это:
FORM1.frxPreview.Clear;
Автор: SergKhM
Дата сообщения: 22.11.2011 22:30
wasilissk

Реально. Я бы разместил под основной таблицей два detail со своими header, а строки для detail отбирал по OnScroll для основной таблицы
Автор: YuriyRR
Дата сообщения: 22.11.2011 23:53
SergKhM

Цитата:
а строки для detail отбирал по OnScroll для основной таблицы

Это дурной тон. Все само должно делаться в связке мастер-деталь
Автор: SergKhM
Дата сообщения: 23.11.2011 01:25
YuriyRR

1. С какой стати это дурной тон? Только потому, что так дядя Borland рисовал?
2. Человек захотел именно без мастер-связки
Автор: wasilissk
Дата сообщения: 23.11.2011 04:41
SergKhM
YuriyRR
Спасибо!
Дело в том, что дизайн отчета происходит в программе. Есть механизм добавлениея user-дейтасетов (по сути делать просто текст SQL и имя), но нет механизма их связывания. Будем думать, что менее затратно, либо реализовать этот механизм, либо делать через событие OnScroll.
Автор: MagistrAnatol
Дата сообщения: 23.11.2011 08:31
GloThin
не помогает почему-то, уже пробывал
Автор: GloThin
Дата сообщения: 23.11.2011 09:54
MagistrAnatol

Цитата:
не помогает почему-то, уже пробывал

Ты же выводишь отчет в собственную форму предпросмотра? Я правильно понял?

Тогда может объяснишь зачем очищать подготовленный отчет?
Для выведения нового?
Если для нового тогда делай:
frxReport1.PrepareReport(True) при подготовке отчета, тогда прежний очистится.

Автор: MagistrAnatol
Дата сообщения: 23.11.2011 11:46
Да и как проверить есть ли подготовленный отчет в frxPreview??

Добавлено:

Цитата:
Ты же выводишь отчет в собственную форму предпросмотра? Я правильно понял?

да, точнее не форму а фрейм, и он у меня не удаляется и не пересоздается - ето меню в стиле офис 2010 реализованное через ТМС

Цитата:
Тогда может объяснишь зачем очищать подготовленный отчет?

а затем что я окрываю меню - превьюшка пустая - формирую предосмотр - и при следующем открытии
меню вижу предыдущий отчет - а мне нада пустая форма превьюшки
Автор: indapublic
Дата сообщения: 23.11.2011 12:03
MagistrAnatol
Prevew.PagesCount

Добавлено:

Цитата:
а мне нада пустая форма превьюшки

Тогда очищай всегда превью перед показом
Автор: MagistrAnatol
Дата сообщения: 23.11.2011 12:11
indapublic
if(frmFrame->frxPreview1->PageCount>0)frmFrame->frxPreview1->Clear();
получаю
Access in invalid memory in process: vdgo.exe(5032) - D:\Робота\Проекты в розробке\ВДГО\_frmMain.cpp#1244
Автор: GloThin
Дата сообщения: 23.11.2011 13:00
MagistrAnatol

Цитата:
формирую предосмотр - и при следующем открытии
меню вижу предыдущий отчет - а мне нада пустая форма превьюшки

Как формируешь?
PrepareReport(true) ?

А в менюшке при открытии проводи очистку фрейма или обновление...
Ты же подготавливаешь отчет, а у него просмотр ассоциирован с твоим фреймом?
Автор: MagistrAnatol
Дата сообщения: 23.11.2011 14:02
GloThin

Цитата:
PrepareReport(true)

да

Цитата:
Ты же подготавливаешь отчет, а у него просмотр ассоциирован с твоим фреймом?

не совсем так - для создание меню в стиле офиса 2010 в тмсовских компонентах используется фрейм, и уже на него я кинул ТfrxPreview
indapublic
так и пробывал на онклик кнопки меню и получил выше наведенную ошибку



Добавлено:
indapublic

Цитата:
Но я бы плясал от Report'a, имхо эстетичней
а подробнее

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859

Предыдущая тема: CBuilder и копирование файла


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.