ActiveReports – выборочный вывод полей

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

ActiveReports – выборочный вывод полей

Сообщение VVitafresh » 17.11.2006 (Пт) 16:08

Есть такая задача по выводу отчета:
1.Расставляем на форме чекбоксы и, в зависимости от выбранных чекбоксов, нужно выводить в отчете те или иные поля. Если все чекбоксы=vbChecked, то выводить все поля.
2. Не выводить в отчете поля, если они пустые, либо NULL.

Возможно ли такое сделать с помощью ActiveReports? Или искать другой способ (например экспорт в файл *.xls)?
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 25.11.2006 (Сб) 21:26

Давно сделал через экспорт в *.xls (вывод в цикле по рекордсету), но интерес по поводу ActiveReports остался. Если это возможно сделать в нем, подскажите как.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 27.11.2006 (Пн) 15:58

VVitafresh писал(а):Давно сделал через экспорт в *.xls (вывод в цикле по рекордсету), но интерес по поводу ActiveReports остался. Если это возможно сделать в нем, подскажите как.


Можно, конечно. Можешь даже в зависимости от своих условий динамически добавить поля при старте репорта в его секции - то бишь вообще создавать весь отчет динамически...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 27.11.2006 (Пн) 16:54

Хм, о динамическом добавлении полей я думал. Хоть это и жутко неудобно (нужно расчитывать координаты при добавлении очередного поля) но возможно.
Однако как насчет второго пукта: "Не выводить в отчете поля, если они пустые, либо NULL"? Ведь в одной записи поле может быть пустым, а в другой -- нет.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.11.2006 (Чт) 15:13

VVitafresh писал(а):Хм, о динамическом добавлении полей я думал. Хоть это и жутко неудобно (нужно расчитывать координаты при добавлении очередного поля) но возможно.


Ну и что там сложного? К тому же сам хочешь универсальности.

VVitafresh писал(а):Однако как насчет второго пукта: "Не выводить в отчете поля, если они пустые, либо NULL"? Ведь в одной записи поле может быть пустым, а в другой -- нет.


Предварительно выполни запрос, который выведет есть ли значащие значения в интересующих тебя полях. Можно такой:

Код: Выделить всё
SELECT SUM(CASE WHEN Field1 IS NULL THEN 0 ELSE 1 END) AS S1,
      SUM(CASE WHEN Field2 IS NULL THEN 0 ELSE 1 END) AS S2,
      SUM(CASE WHEN Field3 IS NULL THEN 0 ELSE 1 END) AS S3
   FROM _T2


А потом уже, по результатам этого запроса, и строй запрос для собственно своего универсального репорта включающий только нужные поля.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 30.11.2006 (Чт) 20:14

Andrey Fedorov писал(а):Предварительно выполни запрос, который выведет есть ли значащие значения в интересующих тебя полях.

А потом уже, по результатам этого запроса, и строй запрос для собственно своего универсального репорта включающий только нужные поля.

Идею понял, но немного не то. Задание передо мной было такое (упрощенно).
Есть к примеру в базе поля: Дата создания документа, № документа, Примечание.
Если дата проставлена, выводим ее, если не проставлена выводим "НЕТ"
Если Примечание пустое, его вообще не выводим.

Именно из-за этих условий я отказался от репорта, т.к. не придумал, как это можно реализовать.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.12.2006 (Пт) 8:38

VVitafresh писал(а):Именно из-за этих условий я отказался от репорта, т.к. не придумал, как это можно реализовать.


Что там думать - трясти надо...

См. приложенный файл.
У вас нет доступа для просмотра вложений в этом сообщении.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 01.12.2006 (Пт) 15:28

Andrey Fedorov, улыбнули твои подколы :)
За примерчик -- спасибо.

Я понял из-за чего непонимание, ты предлагаешь структуру отчета:
Код: Выделить всё
|-------------------------------|
|    Наименование документа           
|-------------------------------|
|Дата |№ документа|Примечание         
|-------------------------------|
|Знач.| Значение  | Значение         
|-------------------------------|

Здесь понятно, что если поле Примечание пустое, то и выводиться ничего не будет.

Реально примечание может быть достаточно длинным, к тому же кроме трех упомянутых полей присутствуют и другие, поэтому чтобы все влезло по ширине формата А4 я делал следующую структуру отчета:

Код: Выделить всё
|---------------------------------------------------|
|    Наименование документа                               
|---------------------------------------------------|
|Дата создания | Значение                                 
|---------------------------------------------------|
|Номер докумен | Значение                               
|---------------------------------------------------|
| Исполнитель  | Значение  (ФИО)                         
|---------------------------------------------------|
| Примечание   |  Длинное значение для примечания     
|---------------------------------------------------|
   Далее следующий документ (поля могут отличаться)....


И я хотел, чтобы последняя строка в случае отсутствия примечания не выводилась вовсе. Вот этот вариант, я думаю, в отчете невозможно осуществить.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.12.2006 (Пт) 16:13

VVitafresh писал(а):И я хотел, чтобы последняя строка в случае отсутствия примечания не выводилась вовсе. Вот этот вариант, я думаю, в отчете невозможно осуществить.


Можно. Как два пальца...

Два способа я прикладываю (по одному на палец) :lol:
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Andrey Fedorov 02.12.2006 (Сб) 2:19, всего редактировалось 2 раз(а).
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 01.12.2006 (Пт) 16:19

Ну, Andrey Fedorov, тебя ничем не удивить. Респект!
Уже изучаю.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.12.2006 (Пт) 16:23

VVitafresh писал(а):Уже изучаю.


Скачай еще раз - там маленькая ошибочка была...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 01.12.2006 (Пт) 16:34

Угу. Уже качаю. Спасибо еще раз.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 02.12.2006 (Сб) 2:23

VVitafresh писал(а):Угу. Уже качаю. Спасибо еще раз.


Можешь еще раз скачать - спешка до добра не доводит.

Ну или руками поправь в ActiveReports1 у секции Detail и обоих полей примечания просто выставь свойство CanShrink = True
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 04.12.2006 (Пн) 15:09

Andrey Fedorov писал(а):Ну или руками поправь в ActiveReports1 у секции Detail и обоих полей примечания просто выставь свойство CanShrink = True

Проставил -- то, что надо. Именно этот вариант мне понравился больше (из двух): минимум кода и делает то, что мне нужно. Честно, не догадался бы, что при CanShrink=True строка полностью исчезает при пустых полях.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 04.12.2006 (Пн) 15:19

VVitafresh писал(а):Проставил -- то, что надо. Именно этот вариант мне понравился больше (из двух): минимум кода и делает то, что мне нужно.


У каждого из вариантов свои прелести.

VVitafresh писал(а):Честно, не догадался бы, что при CanShrink=True строка полностью исчезает при пустых полях.


Вообще-то достаточно было F1 нажать. Помогает, говорят... :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 04.12.2006 (Пн) 15:52

Andrey Fedorov писал(а):Вообще-то достаточно было F1 нажать. Помогает, говорят... :lol:


Видать, не всегда :)

P.S. Вообще, когда есть опыт работы с чем-либо многие вещи кажутся элементарными и само собой разумеющимися, в то же время для непосвященного все не столь очевидно.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList