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

GetChild что возвращает?
Что передается в SaveAs ?
...
Рейтинг: 0 / 0
SaveAs для DataWindowChild из Composite dw
    #33866607
Kr_Yury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу полный текст функции
Код: 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
SaveAs для DataWindowChild из Composite dw
    #33866804
Фотография 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 
...
Рейтинг: 0 / 0
SaveAs для DataWindowChild из Composite dw
    #33867129
Kr_Yury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SaveAs для DataWindowChild из Composite dw
    #33867600
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
8 сообщений из 8, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SaveAs для DataWindowChild из Composite dw
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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