Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как присвоить null колонке dw неизвестного типа ? pb9 / 13 сообщений из 13, страница 1 из 1
14.07.2009, 12:11
    #36088577
Как присвоить null колонке dw неизвестного типа ? pb9
Посоветуйте
Как присвоить null колонке dw неизвестного типа ? pb9
В смысле поэлегантнее без перебора всех возможных типов колонок

Спасибо
...
Рейтинг: 0 / 0
14.07.2009, 20:24
    #36089847
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Код: plaintext
1.
2.
any mynullany
SetNull(mynullany)
dw_whatever.SetItem(row, whatevercolumn, mynullany)
...
Рейтинг: 0 / 0
14.07.2009, 21:55
    #36089951
maxATC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Филипп
Код: plaintext
1.
2.
any mynullany
SetNull(mynullany)
dw_whatever.SetItem(row, whatevercolumn, mynullany)


Any не прокатывает, всё равно надо приводить mynullany к типу whatevercolumn.
...
Рейтинг: 0 / 0
14.07.2009, 21:56
    #36089953
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
To Филипп
А точно никаких проблем с типами не будет?
То что не ругнется это понятно, а то может все-таки длинным путем пойти - определить тип колонки и null соответствующего типа?
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
14.07.2009, 23:06
    #36090013
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
maxATC,

Возможно с SetItem (несмотря на то что он определён как integer dwcontrol.SetItem ( long row, integer/string column, any value )), может и не пройдёт, но с dot notation пройдёт точно.
...
Рейтинг: 0 / 0
14.07.2009, 23:46
    #36090049
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Решил проверить, что за проблема, т.к. сам раньше не сталкивался с этим.
И действительно, в PB9, через SetItem значение не меняется, а через Dot notation - "Type mismatch accessing external object property ".
Т.е. проблема существует.
...
Рейтинг: 0 / 0
14.07.2009, 23:58
    #36090059
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Тогда так (если анальность мешает тип определить):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
long kounter, rows
any nulls[]
rows = dw_1.Rowcount( )
nulls =  dw_1.object.last_name.primary
for kounter =  1  to rows	
	SetNull(nulls[kounter]) 
NEXT
dw_1.object.last_name.primary = nulls
...
Рейтинг: 0 / 0
15.07.2009, 00:25
    #36090075
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
ФилиппТогда так (если анальность мешает тип определить):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
long kounter, rows
any nulls[]
rows = dw_1.Rowcount( )
nulls =  dw_1.object.last_name.primary
for kounter =  1  to rows	
	SetNull(nulls[kounter]) 
NEXT
dw_1.object.last_name.primary = nulls


Да, это работает.
...
Рейтинг: 0 / 0
15.07.2009, 00:25
    #36090077
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Ну и понятно, что в общем случае (при нежелании хардкодать dot notation), можно так:
Код: plaintext
1.
2.
3.
4.
integer colid //определяется из имени колонки через describe (или приходит как аргумент dwo.id)
any tobenull
tobenull = dw_whatever.object.data[row, colid] 
SetNull(tobenull)
dw_whatever.object.data[row, colid] = tobenull
...
Рейтинг: 0 / 0
15.07.2009, 00:29
    #36090081
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Если сократить до минимума то так:
Код: plaintext
1.
2.
3.
4.
Any la_null
la_null = dw_1.Object.col[row]
SetNull(la_null)
dw_1.Object.col[row] = la_null // SetItem тоже работает
...
Рейтинг: 0 / 0
15.07.2009, 00:30
    #36090082
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
Anatoly MoskovskyЕсли сократить до минимума то так:

О, Филипп уже и сам все сократил :)
...
Рейтинг: 0 / 0
15.07.2009, 00:36
    #36090084
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как присвоить null колонке dw неизвестного типа ? pb9
И убрал хардкодинг имени колонки :-))
...
Рейтинг: 0 / 0
15.07.2009, 15:01
    #36091382
Как присвоить null колонке dw неизвестного типа ? pb9
Спасибо - работает.

Не додумался сам в any пихнуть данные колонки
чтоб она тип запомнила а потом null-ить

Коллективный разум - СИЛА!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как присвоить null колонке dw неизвестного типа ? pb9 / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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