Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как выгрузить XML из БД в DelphiXE3 / 14 сообщений из 14, страница 1 из 1
20.05.2021, 00:43
    #40071538
Ольга_Екб
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Надо из БД MSSQL-2014 выгрузить XML, сформированный в хранимоой процедуре, на клиента (DelphiXE3). Создала процедуру, типа:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE [dbo].[GetXML]
AS
BEGIN
  DECLARE @MyXml xml
  -- формирование с помощью инструкций FOR XML
  ...
  Select @MyXml 
END



Сам XML формируется на ура, но никак его не могу передать в DelphiXE3:

Код: pascal
1.
2.
3.
4.
5.
XMLDoc: TXMLDocument;
XMLDoc:=TXMLDocument.Create(self);

Query1.SQL.Text:='EXEC dbo.GetXML';
Query1.Open;



Как запихнуть результат Query1 в XMLDoc?
...
Рейтинг: 0 / 0
20.05.2021, 01:13
    #40071541
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Ольга_Екб,

Приблизительно как-то так:
Код: pascal
1.
XMLDoc.XML.Text := Query1.Fields[0].AsString;
...
Рейтинг: 0 / 0
20.05.2021, 12:45
    #40071635
Ольга_Екб
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Так просто, а я то целый огород нагородила...
Спасибо!
...
Рейтинг: 0 / 0
20.05.2021, 13:12
    #40071641
Ольга_Екб
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Можно тогда еще пару вопросов:

1. Как в T-SQL задать формат чисел с плавающей запятой? У меня сейчас в XML атрибуты формируются так:

NAME="Standart" A0="8.300000000000000e-001" A1="-3.000000000000000e-001" A2="4.700000000000000e-001"

А хотелось бы попроще:

NAME="Standart" A0="0.83" A1="-0.3" A2="0.47"


2. Небольшие XML отлично загружаются и отображаются в Delphi с помощью WebBrowser:
Код: pascal
1.
2.
3.
XMLDoc.LoadFromXML(AnsiString('<?xml version="1.0" encoding="windows-1251"?>')+LF+Query1.Fields[0].AsString);
XMLDoc.SaveToFile(OutFile);
WebBrowser1.Navigate(OutFile);


Но, когда XML весит около 30 Мб, то WebBrowser рисует только часть, а потом пишет: "Недостаточно ресурсов памяти для завершения операции". При этом, когда я формировала этот же XML на клиенте построчно, то такой ошибки не было (просто очень долго).
...
Рейтинг: 0 / 0
20.05.2021, 13:25
    #40071648
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Ольга_Екб,

Код: sql
1.
2.
3.
4.
5.
declare	@f	float = 1.0 / 3

select	f1 = @f
	,	f2 = cast(@f as decimal(19, 4))
for xml path('r')
...
Рейтинг: 0 / 0
20.05.2021, 14:04
    #40071660
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Зачем в программе отображать 30-меговый XML? Да еще и браузером?
...
Рейтинг: 0 / 0
20.05.2021, 14:08
    #40071662
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
20.05.2021 14:04, Fr0sT-Brutal пишет:
> Зачем в программе отображать 30-меговый XML? Да еще и браузером?

для визуального контроля! ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 14:15
    #40071664
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
если мне не изменяет память то xml сформированный в mssql как бы не форматирован, т.е для визуального контроля не подходит :))
...
Рейтинг: 0 / 0
20.05.2021, 14:25
    #40071667
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
эндиxml сформированный в mssql как бы не форматирован

Вот поэтому-то и браузером.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 14:26
    #40071668
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
энди
если мне не изменяет память то xml сформированный в mssql как бы не форматирован, т.е для визуального контроля не подходит :))

Браузер его сам форматирует при отображении.
...
Рейтинг: 0 / 0
20.05.2021, 15:48
    #40071709
Ольга_Екб
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Конечно, пользователь все не просмотрит, но XML ведь многоуровневый, пользователь может быстро найти и просмотреть только интересующую его информацию. Да и просто убедиться, что в файл нормально сформировался, а не мусор какой-нибудь.
...
Рейтинг: 0 / 0
20.05.2021, 15:54
    #40071712
Ольга_Екб
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Zelius,
Хотелось бы обойтись без преобразования типа cast(@f as decimal(19, 4)). XML формируется по сотне представлений, пробежаться по всем и повставлять cast? Придется, наверное, если другого способа нет - какой-нибудь общей для всего XML директивы. Есть такая?
...
Рейтинг: 0 / 0
20.05.2021, 15:55
    #40071713
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
20.05.2021 15:48, Ольга_Екб пишет:
> Да и просто убедиться, что в файл нормально сформировался, а не мусор какой-нибудь.

гы!
я знал!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.05.2021, 16:26
    #40071726
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выгрузить XML из БД в DelphiXE3
Ольга_Екб
Конечно, пользователь все не просмотрит, но XML ведь многоуровневый, пользователь может быстро найти и просмотреть только интересующую его информацию. Да и просто убедиться, что в файл нормально сформировался, а не мусор какой-нибудь.

Облом, ленивым способом такое не сделать. Придется или забить, или самим заполнять дерево. Если совсем лениво, можно поискать реализации на основе VTV, наверняка в сети есть
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как выгрузить XML из БД в DelphiXE3 / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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