|
Динамическое добавление столбцов в DataWindow
|
|||
---|---|---|---|
#18+
Есть DW основанный либо на select с переменным числом столбцов, либо на процедуре, которая возвращает переменное число столбцов. Первые 2 столбца постоянные. Хочется не клепать с нуля DW с помощью SyntaxFromSQL, тем более для процедуры это не подойдёт, а добавить столбцы динамически, по образцу одного из первых столбцов. То есть синтаксис уже сформирован, как лучше добавить столбцы. Примеры и советы приветствуются. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2009, 11:42 |
|
Динамическое добавление столбцов в DataWindow
|
|||
---|---|---|---|
#18+
JenyaDЕсть DW основанный либо на select с переменным числом столбцов, либо на процедуре, которая возвращает переменное число столбцов. Первые 2 столбца постоянные. Хочется не клепать с нуля DW с помощью SyntaxFromSQL, тем более для процедуры это не подойдёт, а добавить столбцы динамически, по образцу одного из первых столбцов. То есть синтаксис уже сформирован, как лучше добавить столбцы. Примеры и советы приветствуются. :) 1. Ну на некоторых серверах SyntaxFromSQL и для процедуры подойдет exec имя_процедуры и все . 2. Сами столбцы в отчет добавить - см. File\New\Tool\DataWindowSyntax Там для column Syntax\Create. 3. Если сам Select возвращает переменное число столбцов, то в DataWindow такой результат не обработать, т.к. для DataWindow resultset должен быть описан заранее (его, конечно, можно менять но количество столбцов должно быть известно до исполнения select). Менять можно например таким образом: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2009, 11:56 |
|
Динамическое добавление столбцов в DataWindow
|
|||
---|---|---|---|
#18+
// пример добавления вычисляемого столбца "computed_field_search.name" string s,sc='' long i,xx=0 // ищем столбец для поиска if this.describe("computed_field_search.name") = '!' then // выбираем все столбцы for i = 1 to long(this.Object.DataWindow.Column.Count) if this.describe('#'+string(i)+'.visible') = '1' then sc+="alltrim(string("+this.describe('#'+string(i)+'.name')+'))+' end if if x < long(this.describe('#'+string(i)+'.x')) then xx = long(this.describe('#'+string(i)+'.x')) + long(this.describe('#'+string(i)+'.width')) + 4 end if next sc=mid(sc,1,len(sc) - 1) s='create compute(band=detail alignment="0" expression=" '+sc+' " border="0" color="33554432" x="'+string(xx)+'" y="8" height="76" width="2510" format="[GENERAL]" html.valueishtml="0" name=computed_field_search visible="1" font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )' if this.modify(s) <> '' then messagebox("Внимание","Не могу создать вычисляемое поле для поиска !",Exclamation!) end if end if return ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2009, 12:02 |
|
Динамическое добавление столбцов в DataWindow
|
|||
---|---|---|---|
#18+
Сервер 15 ASE. Я так понимаю для переменного к-ва столбцов нужно модифицировать table секцию из синтаксиса. Я вот тут выдернул кусок кода из DWSyntax. Это примерно то ?? Только я так понимаю для случая с процедурой будет немного по другому - к-во имена и размерность столбцов я буду знать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2009, 12:25 |
|
Динамическое добавление столбцов в DataWindow
|
|||
---|---|---|---|
#18+
JenyaDСервер 15 ASE. Я так понимаю для переменного к-ва столбцов нужно модифицировать table секцию из синтаксиса. Я вот тут выдернул кусок кода из DWSyntax. Это примерно то ?? Только я так понимаю для случая с процедурой будет немного по другому - к-во имена и размерность столбцов я буду знать. Примерно то. Нужно добавить строчки с column(...) в необходимом количестве, в retrieve(...) прописать свой запрос. Притом запрос можно прописывать без всякого разделения типа Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2009, 12:42 |
|
|
start [/forum/topic.php?fid=15&msg=35913954&tid=1336327]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 147ms |
0 / 0 |