|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Всем привет. Ситуация. Есть таблица, по которой формируется отчет (стандартный report). Есть некоторое условие, при выполнении которого одну из колонок не нужно выводить. Для соответствующего поля в отчете я установил свойство "Print only when expression is true". Таким образом, когда необходимо, значение не печатается. Но под него, к сожалению, отводится место в отчете. То есть, печатается просто пустая вертикальная полоса. Возможно ли это как-то побороть ? Заранее благодарю за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 12:10 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Что такое "пустая вертикальная полоса"? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 16:34 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
FfffffffffffffffЧто такое "пустая вертикальная полоса"? Имеется, ввиду, что само содержимое колонки не выводится, но выводится пустое место под неё. Что создает иллюзию пустой вертикальной полосы в отчете. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 16:39 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Скриншот приложите. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 17:17 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
А не проще иметь два отчета? Тем более, что одним отличием может и не ограничится... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 17:23 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
FfffffffffffffffСкриншот приложите. Ну, например, есть отчет === Поле1 Поле2 Поле3 Поле1 Поле2 Поле3 ... Поле1 Поле2 Поле3 === Когда я скрываю вывод Поля2, у меня отчет начинает выглядеть так: === Поле1 [Пуст.меcто] Поле3 Поле1 [Пуст.меcто] Поле3 ... Поле1 [Пуст.меcто] Поле3 ==== А хотелось бы, чтобы он выглядел в итоге так: ==== Поле1 Поле3 Поле1 Поле3 ... Поле1 Поле3 ==== Надеюсь, суть донес. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 18:10 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
sqlnewА не проще иметь два отчета? Тем более, что одним отличием может и не ограничится... Я задачу, разумеется, упростил. Пользователь, по сути, выбирает, какие конкретно поля он хочет видеть в отчете. Полей этих предполагается в районе 10 штук. Так что, если для каждой комбинации сочетаний полей формировать свой отчет, их будет не 2, а значительно больше. Понятно, что нормальным решением проблемы это не назвать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 18:14 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
tvolf, 1. вывод в Excel 2. отчёт - можно сделать пустографку т.е. отчёт с максимальным количеством колонок и полями курсора field1, field2, ..., field12 эти поля заполнять в курсоре перед выводом отчёта ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 18:37 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
alextashk1. вывод в Excel Хотелось бы обойтись "родными" фокспрошными средствами, по возможности. alextashk2. отчёт - можно сделать пустографку т.е. отчёт с максимальным количеством колонок и полями курсора field1, field2, ..., field12 эти поля заполнять в курсоре перед выводом отчёта Но в этом случае, все неиспользуемые в данный момент поля будут занимать в отчете пустое место справа, я правильно понял ? То есть, не выводить их в отчете не получится ? То есть, если у нас отчет написан на максимальные 10 полей, а в курсоре мы заполняем только первые 3, например (field1, field2, field3), то в отчете будут выводиться все 10, включая и те 7, которые нам не нужны ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 19:09 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
tvolf, А Вы хотите, чтоб было занято все пространство по горизонтали, а ширина полей в отчете автоматом "подгонялась" под нужные значение? Такое, к сожалению - только в формах. Как еще один вариант - могу предложить Вам использовать горизонтальный вывод, не столбцами, а строками, наприпер вместо № ФИО Должность 1 Иванов И.И. Сантехик-рыболов 2 Петров П.П. Слесарь-маляр выводить №: 1 ФИО: Иванов И.И. Должность: Сантехик-рыболов №: 2 ФИО: Петров П.П. Должность: Слесарь-маляр тогда "ненужно" будет представлено в виде строки, которую легко выкинуть ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 19:33 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
SSn888А Вы хотите, чтоб было занято все пространство по горизонтали, а ширина полей в отчете автоматом "подгонялась" под нужные значение? Такое, к сожалению - только в формах. Да, похоже, что в отчетах FoxPro не получится сделать так, как хотелось. Тут проблема даже не в том, что "убираемое" по условию поле в отчете всё равно занимает какое-то место, а в том, что последующие поля в своих свойствах имеют жестко заданные координаты относительно левого верхнего угла соответствующего band'а. Вот если бы можно было задать некий "плавающий" режим, когда при удалении поля все остальные поля, расположенные справа от него, автоматически смещались бы влево на необходимую величину. Что-то типа float:left в html-верстке блоков. Но такого режима, видимо, нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 19:47 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Не, ну можно сделать, как во времена FPD: сформировать в курсоре дополнительно поле - текстовую строку с выборкой нужных вам полей по условию, типа: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 20:02 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
AndreTM, И что Вы выиграете? Точно также пардрами забъете пустые месте и в итоге будете иметь пустую колонку :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 20:10 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Если у Вас VFP9, то, теоретически, это возможно используя ReportListener. Правда, там будет проблема в идентификации объектов, относящихся к скрываемому столбцу. Впрочем, можно просто по координатам определить. Схематично, примерно так получается Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 20:36 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
ВладимирМЕсли у Вас VFP9, то, теоретически, это возможно используя ReportListener. Правда, там будет проблема в идентификации объектов, относящихся к скрываемому столбцу. Впрочем, можно просто по координатам определить. Схематично, примерно так получается [..] Спасибо за пример. Интересно. Получается, что можно субклассировать стандартный ReportListener и передать его экземпляр в REPORT FORM. Правда, наверное, с практической точки зрения это не очень удобно будет (возни много), а вот идея, которую предложил AndreTM, более жизнеспособна, как мне кажется. Теряем, правда, немножко в гибкости, но это в данном случае не так страшно. В общем, можно попробовать действительно поместить все выводимые поля курсора в одно поле отчета и при его формировании проверять требуемые логические условия: если условие вывода не выполняется, то просто выводить пустую строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 21:48 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
tvolfalextashk1. вывод в Excel Хотелось бы обойтись "родными" фокспрошными средствами, по возможности. alextashk2. отчёт - можно сделать пустографку т.е. отчёт с максимальным количеством колонок и полями курсора field1, field2, ..., field12 эти поля заполнять в курсоре перед выводом отчёта Но в этом случае, все неиспользуемые в данный момент поля будут занимать в отчете пустое место справа, я правильно понял ? То есть, не выводить их в отчете не получится ? То есть, если у нас отчет написан на максимальные 10 полей, а в курсоре мы заполняем только первые 3, например (field1, field2, field3), то в отчете будут выводиться все 10, включая и те 7, которые нам не нужны ? формировала документ в формате НТМ для печати вордом или просмотра броузером упрощенный пример прилагаю ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 22:11 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАформировала документ в формате НТМ для печати вордом или просмотра броузером упрощенный пример прилагаю Спасибо, погляжу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 22:26 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Обнаружил интересную проблему. В построителе выражений (Expression Builder) для ввода знечения поля отчета существует ограничению на общую длину вводимой строки в 255 символов. То есть, всё, что вводится свыше этого, просто не сохраняется. Хотя в справке к Expression Builder'у говорится: === Tip You can enter more than 255 characters as well as extended characters, such as CHR(13) (carriage return) and CHR(10) (linefeed), for expressions in the Expression Builder. The Expression box in the Expression Builder supports color syntax and background compilation when turned on. For more information, see How to: Display and Print Source Code in Color. === Непонятно, в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 22:50 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
tvolf, стройте выражение заранее :) пихайте данные в курсор всякими иифами, а уж поля курсора кидайте в отчет :) (раз уз решили использовать этот способ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 23:09 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
SSn888tvolf, стройте выражение заранее :) пихайте данные в курсор всякими иифами, а уж поля курсора кидайте в отчет :) (раз уз решили использовать этот способ) Сделал чуть по-другому. Написал пользовательскую функцию, и уже её одну вызываю из построителя выражения в отчете. Вроде бы работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 23:14 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
SSn888tvolf, стройте выражение заранее пихайте данные в курсор всякими иифами, а уж поля курсора кидайте в отчетЯ, впрочем, это и имел ввиду... А tvolf , видимо, воспринимает совет как "сформировать строку с выражением, а потом в отчете её вычислить" Надо было написАть что-то вроде "выводить в отчет значение этого поля". Потому что использование UDF в отчете - не лучший вариант. И по времени, и с областью видимости переменных могут быть проблемы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2011, 07:36 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
tvolfвот идея, которую предложил AndreTM, более жизнеспособна, как мне кажется. Теряем, правда, немножко в гибкости, но это в данном случае не так страшно. В общем, можно попробовать действительно поместить все выводимые поля курсора в одно поле отчета и при его формировании проверять требуемые логические условия: если условие вывода не выполняется, то просто выводить пустую строку. Как Вы понимаете, Вы далеко не первый, кто захотел решить данную задачу. Подобную задачу уже "повертели" под разными углами. Выводы примерно такие 1. Сам факт возникновения подобной задачи означает, что пользователи сами не знают чего хотят. В том смысле, что у них отсутствую навыки анализа данных. Как следствие, любой отчет какой бы Вы им ни сделали их не удовлетворит. В конце концов, они будут просто "тупо" выводить ВСЕ столбцы, какие только можно 2. Если цель отчета - это вывод неких бланков строгой или условно-строгой отчетности, то лучшим решением будет создавать отдельный отчет на каждую задачу. Просто будут возникать некие сопутствующие модификации в зависимости от наличия того или иного столбца, которые будет крайне сложно учесть в универсальном отчете. 3. Если цель отчета - это предоставление неких исходных данных для последующего анализа, то использование отчета FoxPro не имеет смысла. Ведь пользователям надо будет загрузить полученные данные в какой-то инструмент для последующего анализа. Например, в Excel. А с отчетом FoxPro это сделать проблематично. Т.е. придется либо напрямую выводить данные в Excel, либо создавать файл, который может прочитать анализирующая система (тот же HTML) Другими словами, решение данной задачи средствами отчета FoxPro - это хорошая учебная задача, но практически бесполезна в реальных приложениях. Ну, разве что, как временная "затычка", что "отвязались". Потом все-равно придется переделывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2011, 17:07 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
Да здесь проще всего перед выводом отчёта сделать MyForm.Mygrid.MyColumn.Width = 0 и вы сроду в отчёте эту колонку не увидите. Только после возврата Width не забудьте вернуть в прежнее значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2011, 18:16 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
ВладимирМКак Вы понимаете, Вы далеко не первый, кто захотел решить данную задачу. Была такая мысль, врать не буду :) ВладимирМ[...] 1. Сам факт возникновения подобной задачи означает, что пользователи сами не знают чего хотят. В том смысле, что у них отсутствую навыки анализа данных. Как следствие, любой отчет какой бы Вы им ни сделали их не удовлетворит. В конце концов, они будут просто "тупо" выводить ВСЕ столбцы, какие только можно Тут дело обстоит так. Имеются "специально обученные люди", которым необходимо формировать периодически эти самые отчеты. В указаниях на формирование отчетов вполне недвусмысленно говорится, какие именно колонки (поля) в отчетах должны быть (в каждом свои). Так что самодеятельность вида "А давайте включим ВСЁ!" исключена :) ВладимирМ2. Если цель отчета - это вывод неких бланков строгой или условно-строгой отчетности, то лучшим решением будет создавать отдельный отчет на каждую задачу. Просто будут возникать некие сопутствующие модификации в зависимости от наличия того или иного столбца, которые будет крайне сложно учесть в универсальном отчете. Сами понимаете, что когда полей 10 штук, этих отчетов может быть достаточно много. Если я правильно вас понял, конечно. ВладимирМДругими словами, решение данной задачи средствами отчета FoxPro - это хорошая учебная задача, но практически бесполезна в реальных приложениях. Ну, разве что, как временная "затычка", что "отвязались". Потом все-равно придется переделывать. Задача вполне себе "боевая" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 11:17 |
|
[vfp9] скрыть поле из отчета
|
|||
---|---|---|---|
#18+
rewareДа здесь проще всего перед выводом отчёта сделать MyForm.Mygrid.MyColumn.Width = 0 и вы сроду в отчёте эту колонку не увидите. Только после возврата Width не забудьте вернуть в прежнее значение. Интересно. Каким образом скрытие колонки в гриде влияет на данные, формируемые отчетом ? Там вполне может быть свой курсор, который с гридом вообще никак не связан. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 11:19 |
|
|
start [/forum/topic.php?fid=41&msg=37536395&tid=1583997]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 406ms |
0 / 0 |