powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическое добавление столбцов в DataWindow
6 сообщений из 6, страница 1 из 1
Динамическое добавление столбцов в DataWindow
    #35913954
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть DW основанный либо на select с переменным числом столбцов, либо на процедуре,
которая возвращает переменное число столбцов. Первые 2 столбца постоянные.
Хочется не клепать с нуля DW с помощью SyntaxFromSQL, тем более для процедуры это не подойдёт,
а добавить столбцы динамически, по образцу одного из первых столбцов. То есть синтаксис уже сформирован, как лучше добавить столбцы. Примеры и советы приветствуются. :)
...
Рейтинг: 0 / 0
Динамическое добавление столбцов в DataWindow
    #35914009
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
ls = dw_1.Describe("DataWindow.Syntax")
//добавляем в синтаксис определение дополнительных столбцов
dw_1.Create(ls)
...
Рейтинг: 0 / 0
Динамическое добавление столбцов в DataWindow
    #35914034
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
// пример добавления вычисляемого столбца "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
...
Рейтинг: 0 / 0
Динамическое добавление столбцов в DataWindow
    #35914138
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер 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.
//OLD TABLE SECTION ...
// table(column=(type=number name=dept_id dbname="employee.dept_id"  )
// column=(type=char( 20 ) name=emp_lname dbname="employee.emp_lname"  )
// column=(type=decimal( 4 ) name=salary dbname="employee.salary"  )
// retrieve="PBSELECT(TABLE(NAME=~"employee~") COLUMN(NAME=~"employee.dept_id~") COLUMN(NAME=~"employee.emp_lname~") COLUMN(NAME=~"employee.salary~") 
// )
//NEW TABLE DEFINE WITH ONE ADDED COLUMN (STATUS) ... 
string mod_string, rc 
mod_string = "table(column=(type=number name=dept_id dbname='employee.dept_id'  ) column=(type=char( 20 ) name=emp_lname dbname='employee.emp_lname'  ) column=(type=decimal( 4 ) name=salary dbname='employee.salary'  ) column=(type=char( 1 ) name=status dbname='employee.status'  ) retrieve='PBSELECT(TABLE(NAME=~~'employee~~') COLUMN(NAME=~~'employee.dept_id~~') COLUMN(NAME=~~'employee.emp_lname~~') COLUMN(NAME=~~'employee.salary~~') COLUMN(NAME=~~'employee.status~~')' )"
rc = dw_1.Modify(mod_string)
IF rc <> "" THEN
	MessageBox("Mod to Table Section Failed",rc)
ELSE
	//ADD THE NEW COLUMN TO THE VISUAL DISPLAY OF THE DATAWINDOW ...
	mod_string = "create column(band=detail id= 4  border='0' alignment='0' color='0' height='57' tabsequence= 40  width='453' x='1619' y='36' font.face='Arial' font.height='-8' font.weight='400' font.family='2' font.pitch='2' font.charset='0' background.mode='2' background.color='16777215')"
	rc = dw_1.Modify(mod_string)
	IF rc <> "" THEN
		MessageBox("Create of Column Failed",rc)
	ELSE
		dw_1.SetTransObject(sqlca)
		dw_1.Retrieve()
	END IF
END IF
...
Рейтинг: 0 / 0
Динамическое добавление столбцов в DataWindow
    #35914212
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JenyaDСервер 15 ASE.
Я так понимаю для переменного к-ва столбцов нужно модифицировать table секцию из синтаксиса.
Я вот тут выдернул кусок кода из DWSyntax. Это примерно то ?? Только я так понимаю для случая с процедурой будет немного по другому - к-во имена и размерность столбцов я буду знать.

Примерно то. Нужно добавить строчки с column(...) в необходимом количестве, в retrieve(...) прописать свой запрос. Притом запрос можно прописывать без всякого разделения типа
Код: plaintext
TABLE(NAME=~"employee~") COLUMN(NAME=~"employee.dept_id~") COLUMN(NAME=~"employee.emp_lname~")
а просто сам текст запроса.
...
Рейтинг: 0 / 0
Динамическое добавление столбцов в DataWindow
    #35914497
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хорошо бы координаты X только правильно определить перед добавлением
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическое добавление столбцов в DataWindow
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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