Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FastReport

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

Открыть новую тему     Написать ответ в эту тему

Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как можно сделать в FastReport такое:
Есть база данных из которой берутся данные. Лист разбит на два столбца. Данные печатаются подобным образом:
 
ААА   БББ
ВВВ   ГГГ
ДДД   ЕЕЕ
 
При печати на обратной стороне данные печатаются так-же, но получается, что на данных ААА с обратной стороны печатается БББ, а нужно чтобы было ААА. Тоесть нужно перевернуть данные на обратной стороне.
 
Может скрипт какой-то нужен? Не подскажете?

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 02:29 14-07-2009
krapotkin

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
эта тема здесь уже поднималась
универсального решения нет
 
если шаблон этикетки единого размера, то можно извернуться в компоненте frxDBDataSet или frxUserDataset, написав обработчик OnGetNext
там можно задать такой алгоритм перемещения по базе для нечетных страниц
 
//предположим, 10 этикеток на листе, тогда
//в OnGetFirst:  
  CurLabel:=0;
 
//в OnGetNext:
  // нечетная страница - порядок Б А Г В Е Д
  if odd(CurLabel div 10) then
  begin
    if odd(CurLabel) then
      Dataset.MoveBy(3) // ААА --- ГГГ
    else
      Dataset.MoveBy(-1); // БББ --- AAA
  end else
  begin
    if (CurLabel mod 10)=9 then
      Dataset.First; // в конце первой стр. перейти опять на AAA
    Dataset.Next;
  end;
  inc(CurLabel);
 

Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 08:12 14-07-2009
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
krapotkin
В данном случае есть серьёзные ограничения. Главное - всё пишется в программе. Отчёты могут быть разные, страница может делиться, например на пять частей, Этикеток может быть заранее неизвестное количество и т.п. Может есть более универсальное решение помимо прописания в программе?

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 14:36 14-07-2009
krapotkin

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
принцип останется тем же.
придется просто определить функции
 
Четная/Нечетная Страница
Первый/Последний Ряд
Первый/Последний Столбец
Кол-во этикеток на стр
и т.д.
 
подставить в алгоритм
 
 
P.S.
какое может быть универсальное решение, если даже неизвестно сколько, куда и чего?

Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 21:42 14-07-2009
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
krapotkin
Я не говорю про универсальное решение, главное чтобы это писалось не в теле программы. Естественно это будет в самом редакторе FastReport. Я плохо соображаю в скриптах. Если не сложно набросайте кто-нибудь что-то подобное (согласен, что какие-то переменные я сам вставляю в отчёт исходя из требуемого).

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 21:52 14-07-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как создать отчет  двухстраничный (есть лицевая сторона и обратная) чтобы отображалась у каждой записи сначала лицевая, потом обратная потом следующая запись и у не то же самое сначала лицевая, потом обратная потом

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 17:47 15-07-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
а прочитать выше на 5 постов выше никак? там же ж похожий вопрос, только добавлено разбиение на колонки... а ниже даже скрипт есть...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 08:10 16-07-2009
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
В случае SIgor33 это моет и поможет.
 
А для меня никто ничего придумать не смог?
ПЖАЛСТА, очень надо.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 13:15 16-07-2009
krapotkin

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Aleksandr N
скрипту передаются уже готовые данные, а они должны идти в другом порядке
так что IMHO скриптование здесь - не очень. Только если тупо заводить массив и по тому же алгоритму переставлять. Но массив должен быть конечным...
 
а что юзеры будут сами рисовать отчеты?
 
попробуй поточнее, не так общо сформулировать задачу

Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 15:47 16-07-2009 | Исправлено: krapotkin, 15:58 16-07-2009
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
krapotkin
Ну юзер у меня один: жена
Отчёты рисовать буду я. А размеры массива можно легко определить вручную. А по массиву (количеству записей) можно уже выставлять какие-то константы в скрипте.
 
Ну как поточнее? Есть две тысячи записей. Из них выбирается, допустим 500. Каждая запись вставляется в таблицу, допустим ФИО человека. А на обратной стороне таблицы к этому человеку дописываются дополнительные данные, допустим дата рождения. Конкретнее не получится. Проблема уже описана. Получается что Пупкину 1965г.р. на обратной стороне приписывается запись что он 1897 г.р.
 
Возникнут вопросы - постараюсь объяснить доступно.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 16:02 16-07-2009 | Исправлено: Aleksandr N, 16:11 16-07-2009
krapotkin

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
а количество данных по каждому человеку разное, поэтому разными должны быть и  высоты строк таблицы? причем на первом листе и обороте должны совпадать?
я правильно понял?

Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 22:50 16-07-2009
Aleksandr N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
krapotkin
Количество данных одинаковое, или пустая строка. Высоты строк одинаковые. Строк на обратной стороне может быть по разному. Если у тебя в контактах правильный Майлик, то я выслал один из примеров, должен открыться. На обратной стороне теоретически должны (или не должны в зависимости от ситуации) вписываться данные конкретного человека (одна строка или ~ пять). Главное здесь не это, а соответствие данных на лицевой и обратной стороне, как уже говорил.

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 02:33 17-07-2009
Kins



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую многоуважаемый ALL!
Подскажите начинающему осваивать FR - как в отчете , в столбце,  вывести номер строки?
на бенде MasterData разместил Memo, в Memo прописал: [COUNT(MasterData1)] или [COUNT(MasterData1,2)] - получаю пустую колонку
пробовал через Редактор текста-Вставить агрегатную функцию-выбираю COUNT, Дата-бэнд,Набор данных,поле БД - отчет строиться, строки не нумеруются

Всего записей: 132 | Зарегистр. 30-10-2003 | Отправлено: 08:13 04-08-2009
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kins
нафига ?? есть две системные переменные LINE и LINE# их и пользуй

Всего записей: 1599 | Зарегистр. 01-03-2004 | Отправлено: 09:38 04-08-2009
Kins



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
jonikDk Сенкью

Всего записей: 132 | Зарегистр. 30-10-2003 | Отправлено: 10:14 04-08-2009
sd52



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день ALL!
 
Подскажите пожалуйста, как скрыть   Footer1, Header1, если данные в DetailData1 отсутствуют?
Отчет:
MasterData
Header1
DetailData1
Footer1
 
Как вариант можно в OnBeforePrint на 2-м проходе проверять сумму по каждому Header1, Footer1 (туда предварительно записанную на 1-м проходе) и если она равно 0, ставить Header1 и Footer1  Visible=False;
 
Может кто подскажет другие варианты решения этого вопроса?

Всего записей: 37 | Зарегистр. 26-11-2005 | Отправлено: 00:20 08-08-2009 | Исправлено: sd52, 00:22 08-08-2009
FunCode



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста - возможно ли реализовать такое:
Имеется форма содержащая таблицу из десяти строк (шаблон),
в нее заполняются сведения допустим для 5 строк из DataSet,
если реализовать через MasterData, то выводятся пять строк,
но надо вывести еще пять незаполненных.

Всего записей: 182 | Зарегистр. 22-10-2006 | Отправлено: 19:15 15-09-2009
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FunCode
Воткните ваши 5 пустых строк в заголовок/подвал (header/footer) данных, в зависимости от того, где вы хотите видеть их - в начале таблицы или в конце.

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 08:51 16-09-2009
FunCode



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Tantos

Цитата:
Воткните ваши 5 пустых строк в заголовок/подвал (header/footer) данных, в зависимости от того, где вы хотите видеть их - в начале таблицы или в конце.

Я наверное не очень понятно объяснил:
строк с данными может быть от 1 до 10, соответственно и пустых строк будет от 9 до 0 ...

Всего записей: 182 | Зарегистр. 22-10-2006 | Отправлено: 12:24 16-09-2009
krapotkin

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
используйте UserDataSet
от прокрутится столько раз сколько скажете
RangeEnd:=reCount
RangeEndCount:=10
 
в обработчиках onFirst onNext заполняйте поля из dataset либо очищайте, если EOF

Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 12:59 16-09-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FastReport


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru