Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SaveAs для DataWindowChild из Composite dw / 8 сообщений из 8, страница 1 из 1
19.07.2006, 16:55
    #33864704
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Имеется Composite dw с двумя nested report. Необходимо каждый из них сохранить во внешнем файле. Пробую SaveAs и RowsCopy в ds - возвращается код -1, хотя в HELP сказано, что SaveAs и RowsCopy доступны для dwc. PB 6.5.
Как решить задачу?
...
Рейтинг: 0 / 0
19.07.2006, 23:33
    #33865518
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Через DataWindowChild.
dw_1.GetChild(nested_name, dw_child)
Далее
dw_child.SaveAS
...
Рейтинг: 0 / 0
20.07.2006, 09:59
    #33865904
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Я именно так и делаю. И не ваботает, в этом же и вопрос. Это только в PB 6.5, или в более старших версиях то же самое?
...
Рейтинг: 0 / 0
20.07.2006, 11:21
    #33866252
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Kr_YuryЯ именно так и делаю. И не ваботает, в этом же и вопрос. Это только в PB 6.5, или в более старших версиях то же самое?

GetChild что возвращает?
Что передается в SaveAs ?
...
Рейтинг: 0 / 0
20.07.2006, 12:34
    #33866607
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Привожу полный текст функции
Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
public subroutine wf_to_file ();
Integer i
long	ll_pos, ll_rc
SaveAsType lSaveAsType
String	ls_pathname, ls_filename, ls_ext, ls_path1, ls_path2
n_cst_string lnv_str
DataWindowChild ldwc1, ldwc2
DataStore ldws

i = GetFileSaveName ( 'Select File', ls_pathname, ls_filename, "XLS", &
	"Excel (*.XLS),*.XLS, Comma-separated (*.CSV), *.CSV, DBF (*.DBF), *.DBF") 
If i =  1  Then
	ls_pathname = Lower(ls_pathname)
	ll_pos = lnv_str.of_lastpos(ls_pathname,'.')
	If ll_pos =  0  Then
		Message_Error('Не определено расширение файла.')
		Return
	End If
	ls_ext = MID(ls_pathname, ll_pos+ 1 )
	CHOOSE CASE ls_ext
	 CASE "xls"
		lSaveAsType = Excel5!
	 CASE "csv"
		lSaveAsType = CSV!
	 CASE "dbf"
		lSaveAsType = dBASE3!
	 CASE ELSE
		Message_Error('Для расширения "' + ls_ext + '" формат файла не определён.')
		Return
	END CHOOSE
	If dw_report.GetChild('rep1', ldwc1) = - 1  Or dw_report.GetChild('rep2', ldwc2) = - 1  Then 
		Message_Error('Ошика определения вложеных отчётов.')
		Return
	End If
	ll_rc = ldwc1.RowCount() // Возвращает правильное значение
	If ll_rc >  0  Then
		ldws = CREATE DataStore
		ldws.SetTransObject(SqlCa)
		ldwc1.SetTransObject(SqlCa)
		ll_rc = ldwc1.RowsCopy( 1 , ll_rc, Primary!, ldws,  1 , Primary!) // Возврат - 1 
		If ll_rc >  0  Then
			ll_rc = ldws.SaveAs(ls_pathname,lSaveAsType,false)
			MessageBox('ldws.SaveAs', String(ll_rc))
		End If
		ls_path1 = Left(ls_pathname,ll_pos -  1 ) + '_1.' + ls_ext
		ll_rc = ldwc1.SaveAs(ls_path1,lSaveAsType,false) // Возврат - 1 
	End If	
End If
...
Рейтинг: 0 / 0
20.07.2006, 13:03
    #33866804
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Вот так, наверное, будет правильнее?
Kr_Yury
Код: plaintext
1.
2.
3.
4.
5.
6.
...
		ldws = CREATE DataStore
		ldws.DataObject=ldwc1.DataObject
		ldws.SetTransObject(SqlCa)
		ldwc1.SetTransObject(SqlCa)
		ll_rc = ldwc1.RowsCopy( 1 , ll_rc, Primary!, ldws,  1 , Primary!) // Возврат - 1 
...
Рейтинг: 0 / 0
20.07.2006, 14:07
    #33867129
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
PL99Вот так, наверное, будет правильнее?
Kr_Yury
Код: plaintext
1.
2.
3.
4.
5.
6.
...
		ldws = CREATE DataStore
		ldws.DataObject=ldwc1.DataObject
		ldws.SetTransObject(SqlCa)
		ldwc1.SetTransObject(SqlCa)
		ll_rc = ldwc1.RowsCopy( 1 , ll_rc, Primary!, ldws,  1 , Primary!) // Возврат - 1 

Это неправильно. Это было бы правильно, если бы я собирался выполнять ldws.Retrieve(). А у меня отчет формируется долго, данные приложением уже получены.

Извините, проблема оказалась только с Excel5. В Excel,CSV и DBF SaveAs выполняется. Но в Excel текстовые поля не в той кодировке. И кроме того из среды разработки SaveAs в Excel5 отрабатывается нормально. Когда то работал с PB 8.0, там SaveAs в Excel5 тоже работал нормально.
...
Рейтинг: 0 / 0
20.07.2006, 16:06
    #33867600
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SaveAs для DataWindowChild из Composite dw
Kr_Yury PL99Вот так, наверное, будет правильнее?...
Это неправильно. Это было бы правильно, если бы я собирался выполнять ldws.Retrieve(). А у меня отчет формируется долго, данные приложением уже получены.Вы не можете работать с datastore, не установив для него dataobject, даже если не собираетесь ничего ретривить. В Вашем случае можно не устанавливать для него transaction object, но RowsCopy корректно выполнится только после того, как вы установите DataObject для приемника.
Код: plaintext
1.
2.
3.
4.
...
		ldws.DataObject=ldwc1.DataObject
		//ldws.SetTransObject(SqlCa) 
		ll_rc = ldwc1.RowsCopy( 1 , ll_rc, Primary!, ldws,  1 , Primary!) // Возврат - 1 
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SaveAs для DataWindowChild из Composite dw / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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