powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как скрыть поля с NULL значением ?
21 сообщений из 21, страница 1 из 1
Как скрыть поля с NULL значением ?
    #36353354
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть ДВ типа ГРИД. Нужно скрыть столбцы в которых значение=NULL. Для каждого поля для св-ва Visible указываю выражение:
Код: plaintext
1.
if(isnull([ИМЯ_ПОЛЯ]), 0 , 1 )
По идее скрытые таким образом поля должны пропадать автоматически. Но в результате результат получается такой, как в прикрепленном скриншоте :-(
Как мне из такого:
floorp1fl1fl2fl3fl4fl5fl6p2fl7fl8fl9fl10fl11fl122134nullnullnullnull278nullnullnullnull1112nullnullnullnull256nullnullnullnull
получить такое:
floorp1fl1fl2p2fl7fl821342781112256
Заранее спасипо за помощь.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353426
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner,

добавить аналогичное выражение на width, по идее... т.к. поля то у Вас скрываются...

вопрос еще в том, что делать, если в первой строке поле null а во второй значимое?
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353477
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если столбец=NULL, то он=NULL для всех строк ДВ.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353583
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner ,
возможно это поможет: SlideLeft DataWindow object property
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353589
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner,
тогда тупо убивать width в 0 для null
ну, или SlideLeft, как AIS подсказывает...

хотя, вот Вам примерчик из практики:
на всех 8 этажах 9-и этажного дома в правом крыле по 2 двухкомнатные квартиры, а на 9-м этахе - типа пентхаус - 4-х комнатная с двумя санузлами и свободной планировкой...

вот Вам и ситуация, когда не всегда null в столбце во всех строках... ;)
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353612
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот соурс ДВ:
Код: 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.
release  8 ;
datawindow(units= 0  timer_interval= 0  color= 1073741824  processing= 1  HTMLDW=no print.documentname="" print.orientation =  0  print.margin.left =  110  print.margin.right =  110  print.margin.top =  96  print.margin.bottom =  96  print.paper.source =  0  print.paper.size =  0  print.prompt=no print.buttons=no print.preview.buttons=no grid.lines= 0  grid.columnmove=no selected.mouse=no )
summary(height= 0  color="536870912" )
footer(height= 0  color="536870912" )
detail(height= 92  color="536870912" )
table(column=(type=long updatewhereclause=yes name=floor dbname="floor" )
 column=(type=long updatewhereclause=yes name=p1 dbname="p1" )
 column=(type=long updatewhereclause=yes name=fl1 dbname="fl1" )
 column=(type=long updatewhereclause=yes name=fl2 dbname="fl2" )
 column=(type=long updatewhereclause=yes name=fl3 dbname="fl3" )
 column=(type=long updatewhereclause=yes name=fl4 dbname="fl4" )
 column=(type=long updatewhereclause=yes name=fl5 dbname="fl5" )
 column=(type=long updatewhereclause=yes name=fl6 dbname="fl6" )
 column=(type=long updatewhereclause=yes name=p2 dbname="p2" )
 column=(type=long updatewhereclause=yes name=fl7 dbname="fl7" )
 column=(type=long updatewhereclause=yes name=fl8 dbname="fl8" )
 column=(type=long updatewhereclause=yes name=fl9 dbname="fl9" )
 column=(type=long updatewhereclause=yes name=fl10 dbname="fl10" )
 column=(type=long updatewhereclause=yes name=fl11 dbname="fl11" )
 column=(type=long updatewhereclause=yes name=fl12 dbname="fl12" )
 procedure="1 execute dba.pr_rep_flats;0 dirh = :dirh" arguments=(("dirh", string)) )
column(band=detail id= 1  alignment="2" tabsequence= 32766  border="6" color="0" x="9" y="8" height="76" width="151~tif(isnull(floor),0,151)" format="[general]" html.valueishtml="0"  name=floor visible="1~tif(isnull(floor),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="67108864" )
column(band=detail id= 2  alignment="2" tabsequence= 32766  border="6" color="0" x="169" y="8" height="76" width="151~tif(isnull(p1),0,151)" format="[general]" html.valueishtml="0"  name=p1 visible="1~tif(isnull(p1),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="67108864" )
column(band=detail id= 3  alignment="2" tabsequence= 32766  border="0" color="0" x="329" y="8" height="76" width="151~tif(isnull(fl1),0,151)" format="[general]" html.valueishtml="0"  name=fl1 visible="1~tif(isnull(fl1),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 4  alignment="2" tabsequence= 32766  border="0" color="0" x="489" y="8" height="76" width="151~tif(isnull(fl2),0,151)" format="[general]" html.valueishtml="0"  name=fl2 visible="1~tif(isnull(fl2),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 5  alignment="2" tabsequence= 32766  border="0" color="0" x="649" y="8" height="76" width="151~tif(isnull(fl3),0,151)" format="[general]" html.valueishtml="0"  name=fl3 visible="1~tif(isnull(fl3),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 6  alignment="2" tabsequence= 32766  border="0" color="0" x="809" y="8" height="76" width="151~tif(isnull(fl4),0,151)" format="[general]" html.valueishtml="0"  name=fl4 visible="1~tif(isnull(fl4),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 7  alignment="2" tabsequence= 32766  border="0" color="0" x="969" y="8" height="76" width="151~tif(isnull(fl5),0,151)" format="[general]" html.valueishtml="0"  name=fl5 visible="1~tif(isnull(fl5),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 8  alignment="2" tabsequence= 32766  border="0" color="0" x="1129" y="8" height="76" width="151~tif(isnull(fl6),0,151)" format="[general]" html.valueishtml="0"  name=fl6 visible="1~tif(isnull(fl6),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 9  alignment="2" tabsequence= 32766  border="6" color="0" x="1289" y="8" height="76" width="151~tif(isnull(p2),0,151)" format="[general]" html.valueishtml="0"  name=p2 visible="1~tif(isnull(p2),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="67108864" )
column(band=detail id= 10  alignment="2" tabsequence= 32766  border="0" color="0" x="1449" y="8" height="76" width="151~tif(isnull(fl7),0,151)" format="[general]" html.valueishtml="0"  name=fl7 visible="1~tif(isnull(fl7),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 11  alignment="2" tabsequence= 32766  border="0" color="0" x="1609" y="8" height="76" width="151~tif(isnull(fl8),0,151)" format="[general]" html.valueishtml="0"  name=fl8 visible="1~tif(isnull(fl8),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 12  alignment="2" tabsequence= 32766  border="0" color="0" x="1769" y="8" height="76" width="151~tif(isnull(fl9),0,151)" format="[general]" html.valueishtml="0"  name=fl9 visible="1~tif(isnull(fl9),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 13  alignment="2" tabsequence= 32766  border="0" color="0" x="1929" y="8" height="76" width="151~tif(isnull(fl10),0,151)" format="[general]" html.valueishtml="0"  name=fl10 visible="1~tif(isnull(fl10),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 14  alignment="2" tabsequence= 32766  border="0" color="0" x="2089" y="8" height="76" width="151~tif(isnull(fl11),0,151)" format="[general]" html.valueishtml="0"  name=fl11 visible="1~tif(isnull(fl11),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
column(band=detail id= 15  alignment="2" tabsequence= 32766  border="0" color="0" x="2249" y="8" height="76" width="151~tif(isnull(fl12),0,151)" format="[general]" html.valueishtml="0"  name=fl12 visible="1~tif(isnull(fl12),0,1)" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes 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="2" background.color="16777215" )
htmltable(border="1" )
htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" netscapelayers="0" ) 
Что тут не так ?
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353627
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikar
хотя, вот Вам примерчик из практики:
на всех 8 этажах 9-и этажного дома в правом крыле по 2 двухкомнатные квартиры, а на 9-м этахе - типа пентхаус - 4-х комнатная с двумя санузлами и свободной планировкой...

вот Вам и ситуация, когда не всегда null в столбце во всех строках... ;)
Упрощаем практику: Если столбец=NULL, то он=NULL для всех строк ДВ.
Тут хотя бы разобраться со скрытием нулл-столбцов :-)
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353633
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AIS lioner ,
возможно это поможет: SlideLeft DataWindow object property
Подскажите как использовать это св-во в данном случае ?
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353671
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь после установки выражений полей для Visible и Width (открыл ДВ в режиме Edit Source и добавил выражения для Visible и Width), св-во Width стало равно 9 и X стало равно 5 для каждого поля... :-(
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36353838
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lionerAIS lioner ,
возможно это поможет: SlideLeft DataWindow object property
Подскажите как использовать это св-во в данном случае ?
Врядли можно сказать больше, чем написано в Help.
Варианты:
1. для столбца в свойствах на вкладке Position установить "галочку" для свойства "SlideLeft".
2. для DW в событии "Conctructor":
Код: plaintext
1.
2.
dw_1.Object.column_name.SlideLeft = "yes"
/*либо*/
dw_1.Modify("column_name.SlideLeft=yes")
и если значение столбца Null, а не строковое слово "null" ;), то должно сработать.
Проверьте ещё на всякий случай свойство "Format", может там что-то таки выдает при значении Null.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36354104
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не помогает... Или столбцы остаются на месте или сдвигаются не как надо, накладываются друг на друга. Проблема не решена :-(
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36354183
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lionerНичего не помогает... Или столбцы остаются на месте или сдвигаются не как надо, накладываются друг на друга. Проблема не решена :-(
PB нормально не может обработать такое изменение свойств колонок в run-time (по крайней мере 11). Используйте что-то типа
Код: plaintext
Modify("DESTROY fl3 DESTROY fl4 DESTROY fl5 DESTROY fl6 DESTROY fl9 DESTROY fl10 DESTROY fl11 DESTROY fl12")
из Powerscript/
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36354560
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк
PB нормально не может обработать такое изменение свойств колонок в run-time (по крайней мере 11). Используйте что-то типа
Код: plaintext
Modify("DESTROY fl3 DESTROY fl4 DESTROY fl5 DESTROY fl6 DESTROY fl9 DESTROY fl10 DESTROY fl11 DESTROY fl12")
из Powerscript/
Спасибо ! Это то, что нужно. Получилось.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36354588
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркlionerНичего не помогает... Или столбцы остаются на месте или сдвигаются не как надо, накладываются друг на друга. Проблема не решена :-(
PB нормально не может обработать такое изменение свойств колонок в run-time (по крайней мере 11). Используйте что-то типа
Код: plaintext
Modify("DESTROY fl3 DESTROY fl4 DESTROY fl5 DESTROY fl6 DESTROY fl9 DESTROY fl10 DESTROY fl11 DESTROY fl12")
из Powerscript/
Если уж использовать функцию, то это тоже сработает:
Код: plaintext
1.
Modify('column_name.visible=0')
Но помоему простое Width=0 с условием (как предлагает Ikar ), тоже работает.

А не работает у lioner по какой-то иной причине. Ну, например, все-таки в столбце не все значения равны Null. Либо банально надо просто перегенерить DW, что зачастую в РВ помогает.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36355835
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISНо помоему простое Width=0 с условием (как предлагает Ikar ), тоже работает.

А не работает у lioner по какой-то иной причине. Ну, например, все-таки в столбце не все значения равны Null. Либо банально надо просто перегенерить DW, что зачастую в РВ помогает.
Эксперименты с условием на width в виде if (CurrentRow()= 1,0,100) в Design-time показывают что когда текущая строка меняется, PB не может изменить размер колонки, а меняет только тогда, когда перестраивает все DataWindow.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36356234
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркAISНо помоему простое Width=0 с условием (как предлагает Ikar ), тоже работает.

А не работает у lioner по какой-то иной причине. Ну, например, все-таки в столбце не все значения равны Null. Либо банально надо просто перегенерить DW, что зачастую в РВ помогает.
Эксперименты с условием на width в виде if (CurrentRow()= 1,0,100) в Design-time показывают что когда текущая строка меняется, PB не может изменить размер колонки, а меняет только тогда, когда перестраивает все DataWindow.
Условие не должно быть привязано ко всем строкам, а в целом к столбцу из задачи lioner .

Поэтому управление должно быть построено не таким образом, не внутренне, а внешне, например:
Код: plaintext
1.
/*Создать скрытое поле в заголовке над каждым столбцом, в котором:
если значение столбца в 1-й строке = Null, то column_name.width=0.*/
И по моему это работает.

Я бы все-таки впихнул бы эту обработку в DW, чем конструировал скрипты в DW-control.
Ведь это проще, чем играться с событиями DW и тестировать, где ещё что вылезет либо не сработает.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36356488
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISУсловие не должно быть привязано ко всем строкам, а в целом к столбцу из задачи lioner .

Поэтому управление должно быть построено не таким образом, не внутренне, а внешне, например:
Код: plaintext
1.
/*Создать скрытое поле в заголовке над каждым столбцом, в котором:
если значение столбца в 1-й строке = Null, то column_name.width=0.*/
И по моему это работает.

Я бы все-таки впихнул бы эту обработку в DW, чем конструировал скрипты в DW-control.
Ведь это проще, чем играться с событиями DW и тестировать, где ещё что вылезет либо не сработает.
Ага, только на ширину столбца, как ни странно, влияет только размер колонки или copmuted field расположенного в detail части отчета. И что тут еще может вылезти, когда удалили столбец. А вот с expression на ширину как раз вылезает.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36356559
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк
...Ага, только на ширину столбца, как ни странно, влияет только размер колонки или copmuted field расположенного в detail части отчета. И что тут еще может вылезти, когда удалили столбец. А вот с expression на ширину как раз вылезает.
Хорошо. Скорректирую мысль:
Код: plaintext
 /*если значение column_name 1-й строки = Null, то copmuted_field = 1, иначе 0*/
а далее в width столбца сделать привязку к своему copmuted_field.
Код: plaintext
if (copmuted_field =  1 ,  0 ,  100 )
И что тут сложного, и что тут может вылезти, если оно сработает.
А вот "DESTROY" столбца, надо программировать "где, когда, при каких условиях и т.д. и т.п.".
А следующая выборка (типа для другого дома)? Раскладка столбцов может быть уже другой. А восстановить столбцы, где они вылезут? Пересоздать DW, а если пользователь уже скорректировал ширину видимых столбцов для удобства? и т.д. и т.п.

Помоему учесть всё и выносить это в скрипт - будет сложнее, и там где много "звеньев в цепочке" одно обязательно порвется, только неизвестно когда и при каком событии, либо изменения условий задания.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36356582
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк ,
Если и выносить в скрипт, то не Modify("DESTROY ...") , а Modify('column_name.visible=0') .
Хлопот на много меньше, а эффект тот же.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36357553
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISИ что тут сложного, и что тут может вылезти, если оно сработает.
А попробовать?
AIS Локшин Марк ,
Если и выносить в скрипт, то не Modify("DESTROY ...") , а Modify('column_name.visible=0') .
Хлопот на много меньше, а эффект тот же.
visible = 0 имеет побочный эффект в виде грядушки от скрытых столбцов справа от таблицы.
...
Рейтинг: 0 / 0
Как скрыть поля с NULL значением ?
    #36366034
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы не заморачивался с modify, create, destroy ... а процедуру бы переписал, загрузил бы всё во временную таблицу и "слайдал" апдейтами ...
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как скрыть поля с NULL значением ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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