Автор | Сообщение |
|
| постоянный участник
|
Пост N: 129
Зарегистрирован: 25.12.07
|
|
Отправлено: 10.03.08 23:53. Заголовок: ANN: Вышел релиз FastReport for [x]Harbour (продолжение)
|
|
|
Ответов - 268
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 424
Зарегистрирован: 25.12.07
|
|
Отправлено: 31.08.10 17:00. Заголовок: PSP пишет: Можно ли..
PSP пишет: цитата: | Можно ли объединить два (или более) отчета в ран-тайме в Харборе? |
| Можно: FrPrn:LoadFromFile(RepDir + "1.fr3") FrPrn:PrepareReport() FrPrn:LoadFromFile(RepDir + "4.fr3") FrPrn:PrepareReport(FR_NOTCLEARLASTREPORT) FrPrn:ShowPreparedReport()
|
|
|
|
| постоянный участник
|
Пост N: 85
Зарегистрирован: 27.07.08
|
|
Отправлено: 31.08.10 17:12. Заголовок: Перекрёстная таблица - больная тема
А теперь вопрос на больную тему перекрёстных таблиц 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
|
|
|
|
| постоянный участник
|
Пост N: 440
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.10 20:52. Заголовок: Sergey Spirin, огром..
Sergey Spirin, огромное мерси! :)
|
|
|
|
| постоянный участник
|
Пост N: 441
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.10 21:01. Заголовок: Dr. Oldwarez, я бы п..
Dr. Oldwarez, я бы поиск минимума сделал до формирования отчета, а отчете использовал бы уже готовые значения.
|
|
|
|
| постоянный участник
|
Пост N: 86
Зарегистрирован: 27.07.08
|
|
Отправлено: 31.08.10 21:09. Заголовок: PSP пишет: я бы пои..
PSP пишет: цитата: | я бы поиск минимума сделал до формирования отчета, а отчете использовал бы уже готовые значения. |
| А где хранить эти минимумы? Извините, но я ещё новичок в перекрёстных таблицах. Как-то до этой задачи не приходилось с ними работать...
|
|
|
|
| постоянный участник
|
Пост N: 442
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.08.10 21:39. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | А где хранить эти минимумы? |
| Либо в dbf, либо в переменных (массиве). А в отчете можно легко их достать либо из dbf, либо из переменной(ых)/массива.
|
|
|
|
| постоянный участник
|
Пост N: 87
Зарегистрирован: 27.07.08
|
|
Отправлено: 31.08.10 21:46. Заголовок: Дык, элемент DBCross..
Дык, элемент DBCrosstab не позволяет вставлять в перекрёстную таблицу сторонние данные. Только одна таблица с горизонтальной группировкой.
|
|
|
|
| постоянный участник
|
Пост N: 425
Зарегистрирован: 25.12.07
|
|
Отправлено: 31.08.10 23:17. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Дык, элемент DBCrosstab не позволяет вставлять в перекрёстную таблицу сторонние данные. Только одна таблица с горизонтальной группировкой. |
| Честно говоря, так получилось, что никогда не использовал КроссТабы, поэтому имено про них ничего не подскажу.
|
|
|
|
| постоянный участник
|
Пост N: 88
Зарегистрирован: 27.07.08
|
|
Отправлено: 31.08.10 23:31. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Честно говоря, так получилось, что никогда не использовал КроссТабы, поэтому имено про них ничего не подскажу. |
| Блин, я тоже не использовал. А теперь на-а-а-а-до!!! Ну просто позарез надо!!!
|
|
|
|
| постоянный участник
|
Пост N: 443
Зарегистрирован: 27.01.07
|
|
Отправлено: 01.09.10 09:08. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Дык, элемент DBCrosstab не позволяет |
| Извините, не вник сразу.
|
|
|
|
| постоянный участник
|
Пост N: 426
Зарегистрирован: 25.12.07
|
|
Отправлено: 01.09.10 13:28. Заголовок: PSP пишет: Блин, я ..
PSP пишет: цитата: | Блин, я тоже не использовал. А теперь на-а-а-а-до!!! Ну просто позарез надо!!! |
| Ну чтож, пришлось мне почитать за вас доку, ту самую, на отсутствие которой Андрей наш так сетовал. <\/u><\/a> А это скрипт: 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;
|
|
|
|
|
| постоянный участник
|
Пост N: 1540
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.09.10 15:20. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | ту самую, на отсутствие которой Андрей наш так сетовал. |
| Я сетовал на отсутствие доки по моему примеру. Не надо передергивать ! А по своему примеру, пришлось методом тыка делать !
|
|
|
|
| постоянный участник
|
Пост N: 427
Зарегистрирован: 25.12.07
|
|
Отправлено: 01.09.10 16:43. Заголовок: Andrey пишет: Я сет..
Andrey пишет: цитата: | Я сетовал на отсутствие доки по моему примеру. |
| Это как? Под ваши примеры уже дока должна быть готова? Заранее? Использование же колонок документировано, о них идет речь и в разделе 1.6 Параметры страницы, и более подробно в разделе 2.19 Печать этикеток.
|
|
|
|
| постоянный участник
|
Пост N: 1542
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.09.10 21:07. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Использование же колонок документировано, о них идет речь и в разделе 1.6 Параметры страницы, и более подробно в разделе 2.19 Печать этикеток. |
| Эта информация уже не нужна (устарела). Так как пример уже сделан ! Ну на будущее, может и пригодится.
|
|
|
|
| постоянный участник
|
Пост N: 428
Зарегистрирован: 25.12.07
|
|
Отправлено: 02.09.10 09:25. Заголовок: Andrey пишет: Эта и..
Andrey пишет: цитата: | Эта информация уже не нужна (устарела) |
| Это информация о том, что вам надо сесть и просто прочитать "Руководство пользователя" полностью, с 1-ой по 246-ю страницу. Иначе, в будущем помощь может и не прийти... Так как вопросы по синтаксису, уточнению понятий, прояснению концепций - это одно. А вопрос - "А чего это оно куда то не туды", это совсем, совсем другое.
|
|
|
|
| постоянный участник
|
Пост N: 90
Зарегистрирован: 27.07.08
|
|
Отправлено: 03.09.10 14:32. Заголовок: Sergey Spirin пишет:..
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; |
| Огромное спасибо за скрипт! Я попробовал - получилось! Но шеф усложнил задачу и теперь нужно дополнительно выводить столбец количества позиций (не участвующий в группировке, а принадлежащий к той же группе, что и номер позиции) и дополнительно в простых клетках выводить цену, а в сумме внизу - сумму общих цен (цена*количество)
|
|
|
|
| постоянный участник
|
Пост N: 429
Зарегистрирован: 25.12.07
|
|
Отправлено: 08.09.10 08:49. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Я попробовал - получилось! Но шеф усложнил задачу и теперь нужно дополнительно выводить столбец количества позиций (не участвующий в группировке, а принадлежащий к той же группе, что и номер позиции) и дополнительно в простых клетках выводить цену, а в сумме внизу - сумму общих цен (цена*количество) |
| Привет. Ну что сказать. Как выводить все что угодно "клетках" кросстаба я показал. Конечно, если все устраивать на скрипте, то это уже не так красиво... Все-таки, вы определились с количеством столбцов? Если оно статично или варируется в разумных известных пределах, то может удобней сделать без кросстабов? Еще есть варианты соединять кросстабы по горизонтально, если это подойдет... Короче, задачу надо лучше понимать, чтобы что-то посоветовать.
|
|
|
|
| постоянный участник
|
Пост N: 1752
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.05.11 09:10. Заголовок: Что за остатки полей..
|
|
|
|
| постоянный участник
|
Пост N: 1753
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.05.11 09:16. Заголовок: Как бы убрать эти ..
Как бы убрать эти кракозябы ? Вставить в коде FastReport ПРОВЕРКУ на OEM-кодировку и перевести в WIN-кодировку. И еще добавить строку вызываемой функции, а то приходиться догадки строить, где и что не работает, виноват ли Фаст или своя функция !
|
|
|
|
| постоянный участник
|
Пост N: 492
Зарегистрирован: 25.12.07
|
|
Отправлено: 18.05.11 21:01. Заголовок: Andrey пишет: Что з..
Andrey пишет: цитата: | Что за остатки полей на форме ? Взял старую форму, MasterData был BookAbon. Подключил к другой базе, поменял нужные мне поля. И все равно остались "остатки" предыдущей БД в этой новой форме !!! |
| Это ж с какого интересно бодуна вы решили, что то на что указывают стрелки - это поля БД (!!!) Это объекты отчета типа TfrxMemoView и от того, что изменился набор данных для отчета, с какого лешего это они должны исчезать? Andrey пишет: Выделить и нажать Delete. Andrey пишет: цитата: | И как вообще правильно использовать мои готовые формы для других случаев ? Т.е. порядок подключения формы к другим MasterData ? Заранее спасибо за ответ. |
| Если бы можно было бы понять вопрос, то можно было бы дать и ответ. Попробуйте, напрягитесь наконец с понятийным рядом, и попытайтесь сформулировать. Andrey пишет: цитата: | И еще один вопрос. Делаю вывод (в качестве примера) на форму "Сумму прописью". CallHbFunc('SUMMAPROPIS',[<ABONENT."DOLG_2008">,True]) - работает нормально. Усложнил пример для показа другим... SummaPropis( <ABONENT."DOLG_2008"> ,True) ] - не работает. Что-то неправильно делаю. Где ? Подскажите пожалуйста. |
| Андрей, вы не пьяны были когда это писали? ELSEIF ( FName == "SUMMAPROPIS" ) RES := Str( FParams[ 1 ], FParams[ 2 ] ) Какая была логика? И, кстати, как можно не получить вывих мозга от следующего за этим комментария? // --------------- без этой строчки работать не будет ---// // Так как SUMMAPROPIS() вызывает STR() то необходимо подключить // стандартную Harbour функцию !!! // --------------- без этой строчки работать не будет ---// Andrey пишет: цитата: | Как бы убрать эти кракозябы ? Вставить в коде FastReport ПРОВЕРКУ на OEM-кодировку и перевести в WIN-кодировку. И еще добавить строку вызываемой функции, а то приходиться догадки строить, где и что не работает |
| Гм... Вы хотите сказать, что у вас тексты харборных ошибок по-русски и в OEM-кодировке? Гм... У меня эта выглядит так как и должна: BASE/1099 Argument error: STR Но все в ваших руках. METHOD FrNotifyError(oError) class frReportManager - напишите лучше, и ЕСЛИ Петр, Паша, Григорий одобрят ваш вариант, то заменю и у себя, это не проблема.
|
|
|
Ответов - 268
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
All
[только новые]
|
|