Форум » [x]Harbour » ANN: Вышел релиз FastReport for [x]Harbour (продолжение) » Ответить

ANN: Вышел релиз FastReport for [x]Harbour (продолжение)

Sergey Spirin: Здравствуйте. Рад сообщить, что вышел релиз FastReport for [x]Harbour. Как всегда, информацию можно посмотреть: http://www.paritetsoft.ru/frh.htm Возможным русскоязычных покупателей лучше контактировать со мной напрямую по email. Цена для оплаты в рублях банковским переводом по выставленному счету- 9999 рублей. -- Спирин Сергей. Компания "Паритет Софт". FRH sales: http://www.paritetsoft.ru/frh.htm FRAX sales: http://www.hotsoft.ru/ALASKA/frax_eng.htm

Ответов - 268, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All

Sergey Spirin: PSP пишет: Можно ли объединить два (или более) отчета в ран-тайме в Харборе? Можно: FrPrn:LoadFromFile(RepDir + "1.fr3") FrPrn:PrepareReport() FrPrn:LoadFromFile(RepDir + "4.fr3") FrPrn:PrepareReport(FR_NOTCLEARLASTREPORT) FrPrn:ShowPreparedReport()

Dr. Oldwarez: А теперь вопрос на больную тему перекрёстных таблиц DBCrossTab. Нужно, чтобы по строке выводился минимум, а по столбцу - сумма. Как это сделать? Если я ставлю одну аггрегирующую функцию - минимум, то и по строкам и по столбцам выходит только минимум. А если дополнительно добавляю сумму, то число столбцов удваивается, что недопустимо. ФИРМА1 ФИРМА2 ФИРМА3 МИНИМУМ 001 Задание1 120,00 240,00 300,00 120,00 002 Задание2 100,00 200,00 250,00 100,00 ================================== ИТОГО 220,00 440,00 550,00 220,00

PSP: Sergey Spirin, огромное мерси! :)


PSP: Dr. Oldwarez, я бы поиск минимума сделал до формирования отчета, а отчете использовал бы уже готовые значения.

Dr. Oldwarez: PSP пишет: я бы поиск минимума сделал до формирования отчета, а отчете использовал бы уже готовые значения. А где хранить эти минимумы? Извините, но я ещё новичок в перекрёстных таблицах. Как-то до этой задачи не приходилось с ними работать...

PSP: Dr. Oldwarez пишет: А где хранить эти минимумы? Либо в dbf, либо в переменных (массиве). А в отчете можно легко их достать либо из dbf, либо из переменной(ых)/массива.

Dr. Oldwarez: Дык, элемент DBCrosstab не позволяет вставлять в перекрёстную таблицу сторонние данные. Только одна таблица с горизонтальной группировкой.

Sergey Spirin: Dr. Oldwarez пишет: Дык, элемент DBCrosstab не позволяет вставлять в перекрёстную таблицу сторонние данные. Только одна таблица с горизонтальной группировкой. Честно говоря, так получилось, что никогда не использовал КроссТабы, поэтому имено про них ничего не подскажу.

Dr. Oldwarez: Sergey Spirin пишет: Честно говоря, так получилось, что никогда не использовал КроссТабы, поэтому имено про них ничего не подскажу. Блин, я тоже не использовал. А теперь на-а-а-а-до!!! Ну просто позарез надо!!!

PSP: Dr. Oldwarez пишет: Дык, элемент DBCrosstab не позволяет Извините, не вник сразу.

Sergey Spirin: PSP пишет: Блин, я тоже не использовал. А теперь на-а-а-а-до!!! Ну просто позарез надо!!! Ну чтож, пришлось мне почитать за вас доку, ту самую, на отсутствие которой Андрей наш так сетовал. Ладно, смотрите: А это скрипт: [pre2]var MyMin: Variant; procedure Cross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant); begin if not Cross1.IsGrandTotalColumn(ColumnIndex) then begin if (ColumnIndex = 0) then MyMin := Memo.Value else if (MyMin = 0) or ((Memo.Value < MyMin) and (Memo.Value > 0)) then MyMin := Memo.Value; end else Memo.Text := Format('%m', [MyMin]); end; [/pre2]

Andrey: Sergey Spirin пишет: ту самую, на отсутствие которой Андрей наш так сетовал. Я сетовал на отсутствие доки по моему примеру. Не надо передергивать ! А по своему примеру, пришлось методом тыка делать !

Sergey Spirin: Andrey пишет: Я сетовал на отсутствие доки по моему примеру. Это как? Под ваши примеры уже дока должна быть готова? Заранее? Использование же колонок документировано, о них идет речь и в разделе 1.6 Параметры страницы, и более подробно в разделе 2.19 Печать этикеток.

Andrey: Sergey Spirin пишет: Использование же колонок документировано, о них идет речь и в разделе 1.6 Параметры страницы, и более подробно в разделе 2.19 Печать этикеток. Эта информация уже не нужна (устарела). Так как пример уже сделан ! Ну на будущее, может и пригодится.

Sergey Spirin: Andrey пишет: Эта информация уже не нужна (устарела) Это информация о том, что вам надо сесть и просто прочитать "Руководство пользователя" полностью, с 1-ой по 246-ю страницу. Иначе, в будущем помощь может и не прийти... Так как вопросы по синтаксису, уточнению понятий, прояснению концепций - это одно. А вопрос - "А чего это оно куда то не туды", это совсем, совсем другое.

Dr. Oldwarez: Sergey Spirin пишет: А это скрипт: var MyMin: Variant; procedure Cross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant); begin if not Cross1.IsGrandTotalColumn(ColumnIndex) then begin if (ColumnIndex = 0) then MyMin := Memo.Value else if (MyMin = 0) or ((Memo.Value < MyMin) and (Memo.Value > 0)) then MyMin := Memo.Value; end else Memo.Text := Format('%m', [MyMin]); end; Огромное спасибо за скрипт! Я попробовал - получилось! Но шеф усложнил задачу и теперь нужно дополнительно выводить столбец количества позиций (не участвующий в группировке, а принадлежащий к той же группе, что и номер позиции) и дополнительно в простых клетках выводить цену, а в сумме внизу - сумму общих цен (цена*количество)

Sergey Spirin: Dr. Oldwarez пишет: Я попробовал - получилось! Но шеф усложнил задачу и теперь нужно дополнительно выводить столбец количества позиций (не участвующий в группировке, а принадлежащий к той же группе, что и номер позиции) и дополнительно в простых клетках выводить цену, а в сумме внизу - сумму общих цен (цена*количество) Привет. Ну что сказать. Как выводить все что угодно "клетках" кросстаба я показал. Конечно, если все устраивать на скрипте, то это уже не так красиво... Все-таки, вы определились с количеством столбцов? Если оно статично или варируется в разумных известных пределах, то может удобней сделать без кросстабов? Еще есть варианты соединять кросстабы по горизонтально, если это подойдет... Короче, задачу надо лучше понимать, чтобы что-то посоветовать.

Andrey: Что за остатки полей на форме ? Взял старую форму, MasterData был BookAbon. Подключил к другой базе, поменял нужные мне поля. И все равно остались "остатки" предыдущей БД в этой новой форме !!! Как их удалить ? И как вообще правильно использовать мои готовые формы для других случаев ? Т.е. порядок подключения формы к другим MasterData ? Заранее спасибо за ответ. Увеличить И еще один вопрос. Делаю вывод (в качестве примера) на форму "Сумму прописью". CallHbFunc('SUMMAPROPIS',[<ABONENT."DOLG_2008">,True]) - работает нормально. Усложнил пример для показа другим... SummaPropis( <ABONENT."DOLG_2008"> ,True) ] - не работает. Что-то неправильно делаю. Где ? Подскажите пожалуйста. Сама форма и пример: http://files.mail.ru/NJ3CJ0

Andrey: Как бы убрать эти кракозябы ? Вставить в коде FastReport ПРОВЕРКУ на OEM-кодировку и перевести в WIN-кодировку. И еще добавить строку вызываемой функции, а то приходиться догадки строить, где и что не работает, виноват ли Фаст или своя функция !

Sergey Spirin: Andrey пишет: Что за остатки полей на форме ? Взял старую форму, MasterData был BookAbon. Подключил к другой базе, поменял нужные мне поля. И все равно остались "остатки" предыдущей БД в этой новой форме !!! Это ж с какого интересно бодуна вы решили, что то на что указывают стрелки - это поля БД (!!!) Это объекты отчета типа TfrxMemoView и от того, что изменился набор данных для отчета, с какого лешего это они должны исчезать? Andrey пишет: Как их удалить ? Выделить и нажать Delete. Andrey пишет: И как вообще правильно использовать мои готовые формы для других случаев ? Т.е. порядок подключения формы к другим MasterData ? Заранее спасибо за ответ. Если бы можно было бы понять вопрос, то можно было бы дать и ответ. Попробуйте, напрягитесь наконец с понятийным рядом, и попытайтесь сформулировать. Andrey пишет: И еще один вопрос. Делаю вывод (в качестве примера) на форму "Сумму прописью". CallHbFunc('SUMMAPROPIS',[<ABONENT."DOLG_2008">,True]) - работает нормально. Усложнил пример для показа другим... SummaPropis( <ABONENT."DOLG_2008"> ,True) ] - не работает. Что-то неправильно делаю. Где ? Подскажите пожалуйста. Андрей, вы не пьяны были когда это писали? [pre2] ELSEIF ( FName == "SUMMAPROPIS" ) RES := Str( FParams[ 1 ], FParams[ 2 ] )[/pre2] Какая была логика? И, кстати, как можно не получить вывих мозга от следующего за этим комментария?[pre2] // --------------- без этой строчки работать не будет ---// // Так как SUMMAPROPIS() вызывает STR() то необходимо подключить // стандартную Harbour функцию !!! // --------------- без этой строчки работать не будет ---// [/pre2] Andrey пишет: Как бы убрать эти кракозябы ? Вставить в коде FastReport ПРОВЕРКУ на OEM-кодировку и перевести в WIN-кодировку. И еще добавить строку вызываемой функции, а то приходиться догадки строить, где и что не работает Гм... Вы хотите сказать, что у вас тексты харборных ошибок по-русски и в OEM-кодировке? Гм... У меня эта выглядит так как и должна: BASE/1099 Argument error: STR Но все в ваших руках. METHOD FrNotifyError(oError) class frReportManager - напишите лучше, и ЕСЛИ Петр, Паша, Григорий одобрят ваш вариант, то заменю и у себя, это не проблема.



полная версия страницы