Подавление пустых строк
Добрый день!
Повторно задаю вопрос о подавлении вывода пустых строк.
29.01.05 ответ был дан - использовать св-во бенда Visible, но проблема не ушла – пустая строка остается все равно. Пробовал делать условия для Visible и у бенда и у поля - не помогло.
Мне нужно, чтобы строка с «0» или «пусто» не занимала место в бенде. Готовлю отчет – карточка по з/плате для каждого работника. Вывод полей идет по вертикале:
В дизайнере: В DataSet : В отчете на печати: Мне надо:
Поле1 100.00 100,00 100,00
Поле2 0.00 300,00
Поле3 300.00 300,00
…
ПолеN
Подскажите, пожалуйста, что нужно сделать (проверить) чтобы реализовать задуманное.
Заранее благодарен.
Повторно задаю вопрос о подавлении вывода пустых строк.
29.01.05 ответ был дан - использовать св-во бенда Visible, но проблема не ушла – пустая строка остается все равно. Пробовал делать условия для Visible и у бенда и у поля - не помогло.
Мне нужно, чтобы строка с «0» или «пусто» не занимала место в бенде. Готовлю отчет – карточка по з/плате для каждого работника. Вывод полей идет по вертикале:
В дизайнере: В DataSet : В отчете на печати: Мне надо:
Поле1 100.00 100,00 100,00
Поле2 0.00 300,00
Поле3 300.00 300,00
…
ПолеN
Подскажите, пожалуйста, что нужно сделать (проверить) чтобы реализовать задуманное.
Заранее благодарен.
Комментарии
Во-вторых ты можешь посмотреть в сторону форматированного вывода (в FR поддерживаются форматы Delphi)
Поле_1 100
Поле_2 0 ( или пусто)
Поле_3 300
........
Поле_N
для одной записи датасета, потом следующей и.т.д.
В отчете получается:
100
300
А мне надо чтобы было так:
100
300
HideZeros делает из 0 пусто , но оставляет пустое место. Visible False - не показывает поле, но тоже оставляет пустое место
Может вопрос невнятно сформулирую?
Поле_1 100
Поле_2 0 ( или пусто)
Поле_3 300
Таблица начислений и удержаний по работникам.
У одной записи часть полей заполняется, часть нет. Для следующей записи может быть все наоборот. Если отчет не поджать, то карточка расчета по з/плате займет листа два формата А4 с массой пустых строк отчета (но не датасета)
Изменение свойства Visible здесь не помогает (как уже дважды отмечалось выше).
Пустая строка становится невидимой, но пустое место в отчете остается.
У меня появляется подозрение, что все это можно сделать только программно. А с помощью дизайнера наверно никак.
Есть такая вещь как скрипты (если ты конечно считаешь, что скрипты - это с помощью дизайнера). Тебе привели пример, как с помощью этих самых скриптов сделать то, что тебе нужно (причем можно сделать намного больше, чем подавление пустых строк). Так вот тебе работающий код - специально проверил, хотя и на глаз все ясно (просто после того, как целых два человека (ты и Alex437) в один голос стали утверждать, что это не работает, стало жутко интересно, что там вообще может не работать):
Писать его надо (как ты надеюсь догадался) в скрипте MasterData1.
Если у тебя и после этого не заработает, то можешь смело идти к врачу - руки выпрямлять.
MasterData1 Поле_1
Поле_2
Поле_3
Вариант 2
MasterData1 Поле_1
MasterData2 Поле_2
MasterData3 Поле_3
Желаемый результат на выходе
100
300
без пробелов по верикали
Ты вообще понимаешь, что такое Visible = False?
Такие результаты тебе подходят или тебе нужно что-то другое:
- это полный отчет (без применения вышеприведенного скрипта):
1 AAA
2 BBB
3
4 CCC
5
6 DDD
- это отчет без твоих "пустых" строк:
1 AAA
2 BBB
4 CCC
6 DDD
И вообще приведи структуру своего отчета!
2 Rgv54:
ЕЩЁ раз прочитай весь топик, на предмет того что тебе советовали и что ты сделал. Если не опять ничего не поймёшь, то лучше программированием тебе не заниматься )
На событие OnBeforePrint нужного бенда пишется:
Гаджимурадов Рустам Отправлено: Mar 28 2005, 05:05 PM
Писать его надо (как ты надеюсь догадался) в скрипте MasterData1.
Ну если у него глаза такие же как и руки, то никуда не денешься...
Вопрос решен. Для тех кто столкнется с подобной проблемой вкратце:
Решается форматированным выводом, а MasterData.Visible = False
или Memo.Visible = False в данном случае не проходит
Ты посты выше читал?!!! И в каком месте оно не работает?!!! Ты мне строчку приведи которая не работает!
В данном случае OnBeforePrint не выполнялся, т.к. бенд не был привязан к источнику данных (что я не сразу заметил).
Решение было формировать записи динамически в скрипте.
Сейчас возникла мысл что можно было использовать Child бены (в которых конечно же будет работать Child.Visible := fasle )
-- Заголовок группы
-- Данные (наименование, кол-во) MsaterData
-- Подвал группы (итого, сумма по полю кол-во)
У меня получилось скрыть Данные, но после этого в Итогах сумма по полю кол-во стала нулевой. Как это можно исправить?
Подробне. Что вы скрыли, как?
в скрипте написал
MasterDate1.Visible := False
Если написать
MasterDate1.Visible := True
то все данные мы видим и итоги также считаются.
[SUM(<_DBDReport."SumALL">,MasterData1)]
Короче все работает... SUM отрабатывает правильно в обиоих случаях (и с Visible = True и с Visible = False). Так что ищи у себя ошибку.
Ну блин!... Ошибка у него, а неправ я!
Надо было написать, что тебе сумма "неотображаемых" строк тоже нужна (что-то я такого не заметил по тексту...).
И воббще к чему мы пришли? К тому, что руки не совсем прямые и хелп читать нужно!
Спасибо за попытку помочь.