Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос по retrieve и insertrow / 16 сообщений из 16, страница 1 из 1
27.08.2004, 16:55
    #32669364
Mix
Mix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Имею DW (dw_1), в котором одно из полей - DDDW. Это самое поле цепляет DW с параметром.

В итоге когдя я делаю dw_1.insertrow(0), то идёт запрос параметра.
Что можно сделать, чтоб запрос параметра проставлялся автоматически?

Спасибо!!!
...
Рейтинг: 0 / 0
27.08.2004, 17:02
    #32669384
Mix
Mix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Усё, разобрался:)
Надо галочку убрать AutoRetrieve в настройках самого dw_1 и потом руками делать retrieve chield'у.
...
Рейтинг: 0 / 0
27.08.2004, 17:18
    #32669420
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Ikar сегодня отдыхает, он хорошо начинающих консультирует... Стало быть, отвечу я...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
datawindowchild ldwc_t
long ll_chrows
if dw_1.getchild("cwithchild",ldwc_t) <>  1  then  goto fuckup //or use try catch
ldwc_t.settransobject(sqlca)
ll_chrows = ldwc_t.retrieve(parm /*, parm2,parmn*/ )
if ll_chrows <  0  then goto fuckup
if ll_chrows <  1  then
   ldwc_t.insertrow( 0 )
end if
fuckup:
//treat errors here
Вышеприведенный код спасёт отца русской демократии...
RTFM, само собой
...
Рейтинг: 0 / 0
27.08.2004, 17:19
    #32669423
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Пока я отвлекался разобрались? Ну и ладушки..
...
Рейтинг: 0 / 0
27.08.2004, 17:48
    #32669481
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
QIkar сегодня отдыхает
IKAR как раз сегодня не отдыхает, а работает!
Сорри за оффтоп
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
27.08.2004, 19:07
    #32669588
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Вот позор то :-(

Ругательное слово GOTO на форуме появилось...
...
Рейтинг: 0 / 0
27.08.2004, 19:30
    #32669602
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
ФилиппВот позор то :-(

Ругательное слово GOTO на форуме появилось...Да ладно вам. До появления обработки исключительных ситуаций использование GoTo позволяло писать более прозрачный код.
Собственно говоря, я и сейчас работаю на семерке
...
Рейтинг: 0 / 0
27.08.2004, 21:46
    #32669675
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
ФилиппВот позор то :-(

Ругательное слово GOTO на форуме появилось...
ИМХО - structural programming это идея а не догма. Покажите мне как на powerscript выполнить следующую последовательность действий с обработкой ошибок без превращения кода в простыню
settransobject

retrieve

setfilter

filter

setsort

sort

и я перестану использовать goto в PB.
...
Рейтинг: 0 / 0
27.08.2004, 22:21
    #32669687
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Вот проблема то, а мне почему то за 10 лет НИ РАЗУ GOTO не понадобилось...
...
Рейтинг: 0 / 0
30.08.2004, 13:00
    #32671028
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
ФилиппВот проблема то, а мне почему то за 10 лет НИ РАЗУ GOTO не понадобилось...

без Goto
Код: 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.
n_ds lds_data1, lds_data2, lds_data3
lds_data1 = create n_ds
lds_data2 = create n_ds
lds_data3 = create n_ds


If lds_data1.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Destroy lds_data1
   Destroy lds_data2
   Destroy lds_data3
   Return FAILURE
End if

If lds_data2.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Destroy lds_data1
   Destroy lds_data2
   Destroy lds_data3
   Return FAILURE
End if

If lds_data3.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Destroy lds_data1
   Destroy lds_data2
   Destroy lds_data3
   Return FAILURE
End if

c Goto
Код: 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.
int li_rc = FAILURE
n_ds lds_data1, lds_data2, lds_data3
lds_data1 = create n_ds
lds_data2 = create n_ds
lds_data3 = create n_ds

If lds_data1.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Goto ErrorTrap
End if

If lds_data2.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Goto ErrorTrap
End if

If lds_data3.of_SetTransObject(SQLCA) = FAILURE Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Goto ErrorTrap
End if

li_rc = SUCCESS
ErrorTrap:
   If IsValid(lds_data1) Then Destroy lds_data1
   If IsValid(lds_data2) Then Destroy lds_data2
   If IsValid(lds_data3) Then Destroy lds_data3
   Return li_rc

Без Goto конечно можно, но код будет расти в геометрической прогрессии.
Как быть?
...
Рейтинг: 0 / 0
30.08.2004, 15:29
    #32671525
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public function boolean of_create_datastore (datastore ads_data)
ads_data = create datastore
if (ads_data.SetTransObject(SQLCA) =  1 ) then
	return TRUE
else
	destroy ads_data
	return FALSE
end if
end function

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
datastore lds_data1, lds_data2, lds_data3
boolean lb_continue = TRUE
if lb_continue then lb_continue = of_create_datastore(lds_data1) 
if lb_continue then lb_continue = of_create_datastore(lds_data2)
if lb_continue then lb_continue = of_create_datastore(lds_data3)
if lb_continue then
             // ... skipped ...
	RETURN SUCCESS
ELSE
	MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
	if isValid(lds_data1) then DESTROY lds_data1
	if isValid(lds_data2) then DESTROY lds_data2
	if isValid(lds_data3) then DESTROY lds_data3	
	RETURN FAILURE
END IF
Устраивает?
Хотя с exception конечно красивее получится.
...
Рейтинг: 0 / 0
30.08.2004, 16:19
    #32671663
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
integer i,i1
datastore l[ 3 ]
i= 1 
i1= 1 
do until (i> 3 ) or (i< 1 )
	if i1= 1  then 
		l[i]= create datastore 
		if l[i].SetTransobject( sqlca)<> 1  then 
			MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
			i++
			i1=- 1 
		end if	
	else 
		destroy l[i]
	end if
	i=i+i1
loop
...
Рейтинг: 0 / 0
30.08.2004, 16:24
    #32671678
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
<quot>
Устраивает?
Хотя с exception конечно красивее получится.
</quot>

По мне - нормально. А как поступить с цепочным (do-next-if-done-previous) выполнением разных функций? Для каждой функции писать "thunk"? И что делать в случае неоднотипной обработки ошибок?
...
Рейтинг: 0 / 0
31.08.2004, 10:47
    #32672694
Сотников
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Можно и через флаг, но только не через goto

Код: 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.
n_ds lds_data1, lds_data2, lds_data3
lds_data1 = create n_ds
lds_data2 = create n_ds
lds_data3 = create n_ds
integer flag_error

flag_error =  0 
If lds_data1.of_SetTransObject(SQLCA) = FAILURE Then
  flag_error =  1 
End if

If lds_data2.of_SetTransObject(SQLCA) = FAILURE Then
  flag_error =  1 
End if

If lds_data3.of_SetTransObject(SQLCA) = FAILURE Then
  flag_error =  1 
End if

If flag_error =  1  Then
   MessageBox('Error', 'of_SetTransObject(SQLCA) = FAILURE')
   Destroy lds_data1
   Destroy lds_data2
   Destroy lds_data3
   Return FAILURE
Else
  Return SUCCESS
End If
...
Рейтинг: 0 / 0
31.08.2004, 13:47
    #32673293
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
СотниковМожно и через флаг, но только не через goto
Сразу хочу огориться, что не являюсь goto-филом и нигде кроме PowerScript его не использую. Но высказанная точка зрения мне не понятна. Нет не потому, что не знаю что безусловный переход допустим только в ассемблере (Дейкстру я читал и Виртом не брезговал). Как сказал мистер Сагланик в начале дискуссии goto "ругательное слово"... Я бы сказал жаргонное, не литературное. Но включение именно таких слов делают живую речь короткой и выразительной...

Иными словами, чем именно этот отход от какона хуже многих других к которым волей неволей все мы (скажем, многие из нас) должны время от времени прибегать? Ухудшает читабельность и усложняет сопровождаемость? Не более чем, например, циклы с переменны направлением изменения индекса, чтобы далеко не ходить.
Объясните, коллеги.. Или это из области идеологии?
...
Рейтинг: 0 / 0
31.08.2004, 15:11
    #32673531
Q
Q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по retrieve и insertrow
Вот статья на эту тему, короткая и, ИМХО, полезная Оператор GOTO и преобразование потока управления .
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос по retrieve и insertrow / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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