А что мешает растянуть MasterData_1 на всю страницу, и вставить два одинаковых поля - на пол страницы кождое.
» FastReport
Добавлять 2 мастер дата не получается. Структура у бланка такая: ReportTitle, ColumnHeader, MasterData, ColumnFooter. Я не могу вторую мастер дату вниз вставить, что бы таблица не разъехалась.
Vertimina
Вопрос интересный.. Коллега как-то решил очень тупым методом. Поместил в нижнюю часть такие же компоненты, и для каждого бланка скриптом заполнял нижнюю часть, копируя значения из верхней.
Вопрос интересный.. Коллега как-то решил очень тупым методом. Поместил в нижнюю часть такие же компоненты, и для каждого бланка скриптом заполнял нижнюю часть, копируя значения из верхней.
Спасибо за подсказку. Заполнение скриптом отчасти помогло, только нижняя таблица в которую копируются данные по размеру колонок, по их высоте не совпадает, сильно растягивается и много пустого места остается. Может еще кто сталкивался с подобным, скажите как решили?
Vertimina
В качестве успокоения - скажу, что с большой вероятностью эта задача может мутировать в другую.. Когда верхняя и нижняя часть совпадают, скажем.. на 90-99% а остальные 1-10% разные. Если так, то и время вы не зря потратили - в будущем понадобиться меньше работы на модификацию шаблона.
В качестве успокоения - скажу, что с большой вероятностью эта задача может мутировать в другую.. Когда верхняя и нижняя часть совпадают, скажем.. на 90-99% а остальные 1-10% разные. Если так, то и время вы не зря потратили - в будущем понадобиться меньше работы на модификацию шаблона.
Уже все перепробовал, ничего не получается, и возможно ли такое сделать:
Как сделать отчет, диаграмму вот такой формы:
Есть запрос который достает такие данные
|--------------------------------------------|
|Дата и время| Кассовый аппарат| ФИО|
==========================
| 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
Как сделать отчет, диаграмму вот такой формы:
Есть запрос который достает такие данные
|--------------------------------------------|
|Дата и время| Кассовый аппарат| ФИО|
==========================
| 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
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 из запроса выкинуть
Если нужна динамика по количеству чеков у человека, то примерно так:
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 из запроса выкинуть
Всем привет. Назрела проблема, если где обсуждалось - ткните.
Имеется D2010+ODAC+Oracle. Дело вот в чем, стал вопрос о расширеных подписях в Fast'e, раньше просто все забивалось руками. Теперь необходимо доставать все из справочника - вставил имя переменной, а Fast подхватит значение. Решение видится следующее: завести справочник типа (имя переменной, значение, комментарий), написать свою функцию, которая будет доставать значение по переменной.
Может есть еще какие идеи? Спс.
Имеется D2010+ODAC+Oracle. Дело вот в чем, стал вопрос о расширеных подписях в Fast'e, раньше просто все забивалось руками. Теперь необходимо доставать все из справочника - вставил имя переменной, а Fast подхватит значение. Решение видится следующее: завести справочник типа (имя переменной, значение, комментарий), написать свою функцию, которая будет доставать значение по переменной.
Может есть еще какие идеи? Спс.
GeXamin
1. Вы бы объяснили на более понятном и высоком уровне, для чего это.
2. Обратите внимание, в исходниках ODAC есть папка Demos\Win32\ThirdParty\FastReport\FR4\ - мне очень пригодилось. Это если хотите в рантайме подхватывать активную сессию из приложения и динамически строить всяческие запросы. Тогда у вас получается прямой доступ к справочнику из отчёта.
1. Вы бы объяснили на более понятном и высоком уровне, для чего это.
2. Обратите внимание, в исходниках ODAC есть папка Demos\Win32\ThirdParty\FastReport\FR4\ - мне очень пригодилось. Это если хотите в рантайме подхватывать активную сессию из приложения и динамически строить всяческие запросы. Тогда у вас получается прямой доступ к справочнику из отчёта.
1. Имеется пара десятков отчётов, суть их не имеет значения. В каждом присутствуют в конце "подписи" типа "Директор ______________ / Иванов И.И. /". Сейчас это все забито в статике руками. Хочется динамически из справочника, чтоб менять в одном месте и не лопатить все отчёты.
2. Это пользую, тело отчёта лежит в базе. В проге , через дизайнер создаю, меняю.
Все веду к тому, что юзер делает все сам. В справочник добавил переменную "Name", значение "Новая переменная", в отчет кинул что-то вроде [Name], а на печать ушло Новая переменная.
Что-то типа переменных, но чтоб на автомате из справочника, а не пересобирать приложение с передачей новой переменной в отчёт. Как-то так.
2. Это пользую, тело отчёта лежит в базе. В проге , через дизайнер создаю, меняю.
Все веду к тому, что юзер делает все сам. В справочник добавил переменную "Name", значение "Новая переменная", в отчет кинул что-то вроде [Name], а на печать ушло Новая переменная.
Что-то типа переменных, но чтоб на автомате из справочника, а не пересобирать приложение с передачей новой переменной в отчёт. Как-то так.
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;
Цитата:
Что-то типа переменных
Подгрузка из словаря
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;
YuriyRR
Собственно это один из двух вариантов, о которых я думал:
- передача всех переменных.
- наваять свою фнкцию для Фаста, подтягивающую значение.
Сомневался на счёт первого, но теперь задумался - ведь так прямо в редакторе будет виден список переменных.
Собственно это один из двух вариантов, о которых я думал:
- передача всех переменных.
- наваять свою фнкцию для Фаста, подтягивающую значение.
Сомневался на счёт первого, но теперь задумался - ведь так прямо в редакторе будет виден список переменных.
Цитата:
1. Имеется пара десятков отчётов, суть их не имеет значения. В каждом присутствуют в конце "подписи" типа "Директор ______________ / Иванов И.И. /". Сейчас это все забито в статике руками. Хочется динамически из справочника, чтоб менять в одном месте и не лопатить все отчёты.
Значит, так. Я такое делал следующим образом:
1. Справочник (или несколько) должностей и сотрудников в базе данных.
2. В каждом отчёте при его запуске в диалоговом окошке параметров отчёта есть пара лукапкомбобоксов, связанных с запросами из этих справочников (посредством использования одаковского примера для фастрепорта).
3. Пользователь при формировании сам выбирает единожды сотрудника, который сохраняется в реестр/ини файл и при следующем запуске автоматически подтягивается в поле.
Никаких переменных, всё просто как для меня, так и для пользователя.
Цитата:
Пользователь при формировании сам выбирает единожды сотрудника, который сохраняется в реестр/ини файл и при следующем запуске автоматически подтягивается в поле.т.е. с отчётом нужно тягать обязательно файл с настройками?
Цитата:
т.е. с отчётом нужно тягать обязательно файл с настройками?
Зачем тягать? Он сам создастся. При переносе на другой комп просто заново придётся выбрать пару человек. А если так уж критично - можно зафиксировать выбор на уровне БД, в которой и хранить для каждого отчёта перечень параметров. Даже сам отчёт можно в блоб запихнуть.
Лично я делаю хранение настроек программ в ини-файлах - портабельно и просто. И когда переношу программу - могу и файлик ини дополнительно перенести.
Есть вариант с хранением настроек в профилях пользователей - тогда сложнее, но тоже не проблема.
rrromano
Идею понял. Спасибо всем.
Идею понял. Спасибо всем.
Народ, как очистить подготовленный отчет в frxPreview?
Имеются три таблицы
Мастер:
Заказы(ID, NAME)
Детали:
Материал(ID, ORDER_ID, NAME, WIDTH, LENGTH)
Обработка(ID, ORDER_ID, NAME)
Структура надуманная, важно различное количество смысловых колонок. (NAME, WIDTH, LENGTH в первом; NAME во втором случаях).
Необходимо сформировать отчет, типа
Код:
Вывеска
Материал:
Пластик 12 13
ЛДСП 14 23
Обработка:
Фрезеровка
Обрезка
Баннер
Материал:
Фанера 23 55
Обработка:
Кромление
Покраска
Мастер:
Заказы(ID, NAME)
Детали:
Материал(ID, ORDER_ID, NAME, WIDTH, LENGTH)
Обработка(ID, ORDER_ID, NAME)
Структура надуманная, важно различное количество смысловых колонок. (NAME, WIDTH, LENGTH в первом; NAME во втором случаях).
Необходимо сформировать отчет, типа
Код:
Вывеска
Материал:
Пластик 12 13
ЛДСП 14 23
Обработка:
Фрезеровка
Обрезка
Баннер
Материал:
Фанера 23 55
Обработка:
Кромление
Покраска
MagistrAnatol
Цитата:
Может это:
FORM1.frxPreview.Clear;
Цитата:
Народ, как очистить подготовленный отчет в frxPreview?
Может это:
FORM1.frxPreview.Clear;
wasilissk
Реально. Я бы разместил под основной таблицей два detail со своими header, а строки для detail отбирал по OnScroll для основной таблицы
Реально. Я бы разместил под основной таблицей два detail со своими header, а строки для detail отбирал по OnScroll для основной таблицы
SergKhM
Цитата:
Это дурной тон. Все само должно делаться в связке мастер-деталь
Цитата:
а строки для detail отбирал по OnScroll для основной таблицы
Это дурной тон. Все само должно делаться в связке мастер-деталь
YuriyRR
1. С какой стати это дурной тон? Только потому, что так дядя Borland рисовал?
2. Человек захотел именно без мастер-связки
1. С какой стати это дурной тон? Только потому, что так дядя Borland рисовал?
2. Человек захотел именно без мастер-связки
SergKhM
YuriyRR
Спасибо!
Дело в том, что дизайн отчета происходит в программе. Есть механизм добавлениея user-дейтасетов (по сути делать просто текст SQL и имя), но нет механизма их связывания. Будем думать, что менее затратно, либо реализовать этот механизм, либо делать через событие OnScroll.
YuriyRR
Спасибо!
Дело в том, что дизайн отчета происходит в программе. Есть механизм добавлениея user-дейтасетов (по сути делать просто текст SQL и имя), но нет механизма их связывания. Будем думать, что менее затратно, либо реализовать этот механизм, либо делать через событие OnScroll.
GloThin
не помогает почему-то, уже пробывал
не помогает почему-то, уже пробывал
MagistrAnatol
Цитата:
Ты же выводишь отчет в собственную форму предпросмотра? Я правильно понял?
Тогда может объяснишь зачем очищать подготовленный отчет?
Для выведения нового?
Если для нового тогда делай:
frxReport1.PrepareReport(True) при подготовке отчета, тогда прежний очистится.
Цитата:
не помогает почему-то, уже пробывал
Ты же выводишь отчет в собственную форму предпросмотра? Я правильно понял?
Тогда может объяснишь зачем очищать подготовленный отчет?
Для выведения нового?
Если для нового тогда делай:
frxReport1.PrepareReport(True) при подготовке отчета, тогда прежний очистится.
Да и как проверить есть ли подготовленный отчет в frxPreview??
Добавлено:
Цитата:
да, точнее не форму а фрейм, и он у меня не удаляется и не пересоздается - ето меню в стиле офис 2010 реализованное через ТМС
Цитата:
а затем что я окрываю меню - превьюшка пустая - формирую предосмотр - и при следующем открытии
меню вижу предыдущий отчет - а мне нада пустая форма превьюшки
Добавлено:
Цитата:
Ты же выводишь отчет в собственную форму предпросмотра? Я правильно понял?
да, точнее не форму а фрейм, и он у меня не удаляется и не пересоздается - ето меню в стиле офис 2010 реализованное через ТМС
Цитата:
Тогда может объяснишь зачем очищать подготовленный отчет?
а затем что я окрываю меню - превьюшка пустая - формирую предосмотр - и при следующем открытии
меню вижу предыдущий отчет - а мне нада пустая форма превьюшки
MagistrAnatol
Prevew.PagesCount
Добавлено:
Цитата:
Тогда очищай всегда превью перед показом
Prevew.PagesCount
Добавлено:
Цитата:
а мне нада пустая форма превьюшки
Тогда очищай всегда превью перед показом
indapublic
if(frmFrame->frxPreview1->PageCount>0)frmFrame->frxPreview1->Clear();
получаю
Access in invalid memory in process: vdgo.exe(5032) - D:\Робота\Проекты в розробке\ВДГО\_frmMain.cpp#1244
if(frmFrame->frxPreview1->PageCount>0)frmFrame->frxPreview1->Clear();
получаю
Access in invalid memory in process: vdgo.exe(5032) - D:\Робота\Проекты в розробке\ВДГО\_frmMain.cpp#1244
MagistrAnatol
Цитата:
Как формируешь?
PrepareReport(true) ?
А в менюшке при открытии проводи очистку фрейма или обновление...
Ты же подготавливаешь отчет, а у него просмотр ассоциирован с твоим фреймом?
Цитата:
формирую предосмотр - и при следующем открытии
меню вижу предыдущий отчет - а мне нада пустая форма превьюшки
Как формируешь?
PrepareReport(true) ?
А в менюшке при открытии проводи очистку фрейма или обновление...
Ты же подготавливаешь отчет, а у него просмотр ассоциирован с твоим фреймом?
GloThin
Цитата:
да
Цитата:
не совсем так - для создание меню в стиле офиса 2010 в тмсовских компонентах используется фрейм, и уже на него я кинул ТfrxPreview
indapublic
так и пробывал на онклик кнопки меню и получил выше наведенную ошибку
Добавлено:
indapublic
Цитата:
Цитата:
PrepareReport(true)
да
Цитата:
Ты же подготавливаешь отчет, а у него просмотр ассоциирован с твоим фреймом?
не совсем так - для создание меню в стиле офиса 2010 в тмсовских компонентах используется фрейм, и уже на него я кинул ТfrxPreview
indapublic
так и пробывал на онклик кнопки меню и получил выше наведенную ошибку
Добавлено:
indapublic
Цитата:
Но я бы плясал от Report'a, имхо эстетичнейа подробнее
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
Предыдущая тема: CBuilder и копирование файла
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.