Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с отчетом / 10 сообщений из 10, страница 1 из 1
13.04.2009, 10:14
    #35927591
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Здравствуйте. Помогите построить отчет.
Есть запрос возвращающий такие записи:
sumareaq_privilegieprivilegiediscount14319.7835854.6512581043505383.267431.52315176755319.005221.20204123100
где sum - сумма,area - площадь,q_privilegie - кол-во льготников,privilegie - кол-во льгот,discount - процент льготы.
Эти данные нужно отобразить в отчете в таком виде:
5075100ВсегоЕд. измеренийкол-во льгот10431761231342чел.кол-во льготников12583152041777чел.площадь35854.657431.525221.2048507.37кв. м.сумма14319.785383.265319.0025022.04руб.
Как такое можно сделать? Зараннее спасибо за помощь.
...
Рейтинг: 0 / 0
13.04.2009, 11:06
    #35927740
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Сделать crosstab отчет изменив исходынй запрос, или нарисовать отчет, меняя синтаксис DataWindow и раскидывая данные по ячейкам из скрипта.
...
Рейтинг: 0 / 0
13.04.2009, 11:17
    #35927770
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Локшин МаркСделать crosstab отчет изменив исходынй запрос, или нарисовать отчет, меняя синтаксис DataWindow и раскидывая данные по ячейкам из скрипта.
Как изменить исходный запрос чтобы сделать кросстаб? Можно поподробнее?
...
Рейтинг: 0 / 0
13.04.2009, 12:04
    #35927924
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Вытягивать строки следующим образом
наименование строки/единища измерения/льгота/значение
т.е. sum/area/q_privilegie/privilegie вытягивать в 4-х разных строках а не в одной
...
Рейтинг: 0 / 0
13.04.2009, 12:30
    #35928014
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Локшин МаркВытягивать строки следующим образом
наименование строки/единища измерения/льгота/значение
т.е. sum/area/q_privilegie/privilegie вытягивать в 4-х разных строках а не в одной
Непонятно... Где можно прочитать про кростаб? Если можно, скиньте ссылку.
...
Рейтинг: 0 / 0
13.04.2009, 12:46
    #35928072
edmikeca
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
lionerНепонятно... Где можно прочитать про кростаб? Если можно, скиньте ссылку.А что в хелпе нет про кростаб?
...
Рейтинг: 0 / 0
14.04.2009, 10:09
    #35929694
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Разобрался с кросстабом.
Но:
1) мастер по умолчанию разместил столбец "Ед. изм." на 2-ом месте (это видно на прикрепленном рисунке), а нужно чтобы он был последним после столбца "Всего". Рисовальщик датавиндоу не позволяет переместить столбец мышкой. В режиме предварительного просмотра наблюдается тоже самое. Может нужно ручками редактировать датасоурс ДВ, меняя вручную Х-координату?
2) надпись в Header[1] нельзя расположить по всей ширине кросстаба. При попытке увеличить ее ширину изменяется ширина столбца strname. Нужно в хеадере выше самой таблицы расположить надпись и в футере разместить некоторые надписи. Надписи должны быть независимы от ширины столбцов кросстаба. Или придется создавать новое ДВ, заполнять его хеадер и футер надписями, а в секцию детализации помещать кросстаб как вложенный отчет ?
Привожу синтаксис полученного кросстаба:
Код: 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.
release  8 ;
datawindow(units= 3  timer_interval= 0  color= 1073741824  processing= 4  HTMLDW=no print.documentname="" print.orientation =  2  print.margin.left =  635  print.margin.right =  635  print.margin.top =  635  print.margin.bottom =  635  print.paper.source =  0  print.paper.size =  0  print.prompt=no print.buttons=no print.preview.buttons=no  crosstab.dynamic = yes grid.lines= 0  grid.columnmove=no selected.mouse=no )
header[ 1 ](height= 502  color="536870912" )
header[ 2 ](height= 476  color="536870912" )
summary(height= 0  color="536870912" )
footer(height= 0  color="536870912" )
detail(height= 820  color="536870912" )
table(column=(type=char( 20 ) updatewhereclause=yes name=strname dbname="strname" )
 column=(type=char( 20 ) updatewhereclause=yes name=edizm dbname="edizm" )
 column=(type=number updatewhereclause=yes name=value dbname="value" )
 retrieve="select 'Кол-во льготников' strname,count(t.privilegie) value,t.discount*100 persent,'чел.' edizm
from t
group by t.discount
union
select 'Кол-во чел. иждив.' strname,sum(t.q_priv) value,t.discount*100 persent,'чел.' edizm
from t
group by t.discount
union
select 'Льготная площадь' strname,sum(t.priv_area) value,t.discount*100 persent,'кв.м.' edizm
from t
group by t.discount
union
select 'Сумма льготы' strname,sum(t.sum) value,t.discount*100 persent,'грн.' edizm
from t
group by t.discount" arguments=(("d1", string),("priv", string))  sort="strname A edizm A " )
text(band=header[ 2 ] alignment="0" text="Ед. изм." border="0" color="33554432" x="3254" y="27" height="423" width="1455" html.valueishtml="0"  name=edizm_t visible="1"  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
text(band=header[ 2 ] alignment="0" text="@persent %" border="0" color="33554432" x="4762" y="27" height="423" width="1905" html.valueishtml="0"  name=value_t visible="1"  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
text(band=header[ 2 ] alignment="0" text="Всего " border="0" color="33554432" x="6720" y="27" height="423" width="2513" html.valueishtml="0"  name=grand_sum_value_t visible="1"  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
column(band=detail id= 1  alignment="0" tabsequence= 32766  border="0" color="33554432" x="52" y="27" height="740" width="3148" format="[general]" html.valueishtml="0"  name=strname visible="1" edit.limit= 50  edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes edit.imemode= 0   font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
column(band=detail id= 2  alignment="0" tabsequence= 32766  border="0" color="33554432" x="3254" y="27" height="740" width="1455" format="[general]" html.valueishtml="0"  name=edizm visible="1" edit.limit= 5  edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes edit.imemode= 0   font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
column(band=detail id= 3  alignment="0" tabsequence= 32766  border="0" color="33554432" x="4762" y="27" height="740" width="1905" format="[general]" html.valueishtml="0"  name=value visible="1" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes edit.imemode= 0  crosstab.repeat=yes  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
compute(band=detail alignment="0" expression="crosstabsum(1)"border="0" color="33554432" x="6720" y="27" height="740" width="2513" format="" html.valueishtml="0"  name=grand_sum_value visible="1"  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
compute(band=header[ 1 ] alignment="0" expression="'Реестр № 7 от '+d1"border="0" color="33554432" x="26" y="26" height="423" width="3175" format="[GENERAL]" html.valueishtml="0"  name=compute_1 visible="1"  font.face="Arial" font.height="-10" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )
 crosstab(band = foreground  crosstabonly = yes 
 columns = "persent" rows = "strname, edizm" values = "sum(value for crosstab)" sourcenames = "strname, value, persent, edizm")
sparse(names="strname")htmltable(border="0" cellpadding="1" cellspacing="1" )
htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" netscapelayers="0" ) 
...
Рейтинг: 0 / 0
14.04.2009, 11:15
    #35929981
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
lionerРазобрался с кросстабом.
Но:
1) мастер по умолчанию разместил столбец "Ед. изм." на 2-ом месте (это видно на прикрепленном рисунке), а нужно чтобы он был последним после столбца "Всего". Рисовальщик датавиндоу не позволяет переместить столбец мышкой. В режиме предварительного просмотра наблюдается тоже самое. Может нужно ручками редактировать датасоурс ДВ, меняя вручную Х-координату?
2) надпись в Header[1] нельзя расположить по всей ширине кросстаба. При попытке увеличить ее ширину изменяется ширина столбца strname. Нужно в хеадере выше самой таблицы расположить надпись и в футере разместить некоторые надписи. Надписи должны быть независимы от ширины столбцов кросстаба. Или придется создавать новое ДВ, заполнять его хеадер и футер надписями, а в секцию детализации помещать кросстаб как вложенный отчет ?

1. Например сделать размер столбца ед. изм. = 0, Добавить агрегируемый столбец при помощи еще одного кросстаб ряда, скрыв сам ряд и в итоге написать что-то типа if(crosstabsum(1) <> crosstabsum(1),"",edizm). Может и проще можно, я с кросстабами давно уже не работал (см. п.4).
2. Сделать layer background
3. Зачем в запросе писать union а не union all?
4. Кросстаб вообще крайне не додуманная и наредкость неудобная для управления штука в DataWindow которая не развивается уже более 15 лет.
...
Рейтинг: 0 / 0
14.04.2009, 11:28
    #35930036
lioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
Локшин МаркlionerРазобрался с кросстабом.
Но:
1) мастер по умолчанию разместил столбец "Ед. изм." на 2-ом месте (это видно на прикрепленном рисунке), а нужно чтобы он был последним после столбца "Всего". Рисовальщик датавиндоу не позволяет переместить столбец мышкой. В режиме предварительного просмотра наблюдается тоже самое. Может нужно ручками редактировать датасоурс ДВ, меняя вручную Х-координату?
2) надпись в Header[1] нельзя расположить по всей ширине кросстаба. При попытке увеличить ее ширину изменяется ширина столбца strname. Нужно в хеадере выше самой таблицы расположить надпись и в футере разместить некоторые надписи. Надписи должны быть независимы от ширины столбцов кросстаба. Или придется создавать новое ДВ, заполнять его хеадер и футер надписями, а в секцию детализации помещать кросстаб как вложенный отчет ?

1. Например сделать размер столбца ед. изм. = 0, Добавить агрегируемый столбец при помощи еще одного кросстаб ряда, скрыв сам ряд и в итоге написать что-то типа if(crosstabsum(1) <> crosstabsum(1),"",edizm). Может и проще можно, я с кросстабами давно уже не работал (см. п.4).
2. Сделать layer background
3. Зачем в запросе писать union а не union all?
4. Кросстаб вообще крайне не додуманная и наредкость неудобная для управления штука в DataWindow которая не развивается уже более 15 лет.
Спасибо за ответы и советы.
Есть еще одна проблемка: в хеадере нужно добавить некое поле ввода, в которое пользователь мог бы вводить некий текст после ретрива отчета, т.е. сам по своему усмотрению озаглавливать отчет. Как это можно сделать ?
...
Рейтинг: 0 / 0
14.04.2009, 12:07
    #35930212
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с отчетом
lionerЕсть еще одна проблемка: в хеадере нужно добавить некое поле ввода, в которое пользователь мог бы вводить некий текст после ретрива отчета, т.е. сам по своему усмотрению озаглавливать отчет. Как это можно сделать ?
В crosstab'е - никак. Разместите на окне отдельный элемент для ввода названия.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с отчетом / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]