Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

запись select-а в XML файл   Найти похожие ветки 

 
Анна   (2008-01-25 12:33) [0]

Здравствуйте, мастера!
Можно ли в Delphi результаты select-a записать в файл XML? Чтобы дальше использовать файлы XML, как таблицы БД, делая к ним запросы, вставляя в них новые данные и удаляя неверные. И все это средствами Delphi. Если "да", то какие компоненты надо использовать?  
Сделала в QA:
select id_prod,red_prod  from fish_prod where id_prod in (1,2) for xml auto,elements
Записала рез-т в файл на жесткий диск .XML. Попробовала открыть его в интернет эксплор, выдает ошибку:
В текстовом комментарии обнаружен недопустимый знак. Ошибка при обработке ресурса ""file:///D:/tttt.XML"".
Прочитала в статье, что для корректной записи XML файла надо :
select id_prod,red_prod  from fish_prod where id_prod in (1,2) for xml  EXPLICIT
Но не знаю как в Delphi записать XML файлы.
Дайте пож ссылку, чтобы прочитать, если такая технология (работа с данными через XML файлы) возможна. И Ваше мнение.


 
clickmaker ©   (2008-01-25 12:41) [1]

ClientDataSet


 
Sergey13 ©   (2008-01-25 13:17) [2]

> [0] Анна   (25.01.08 12:33)
> Чтобы дальше использовать файлы XML, как таблицы БД, делая
> к ним запросы, вставляя в них новые данные и удаляя неверные.

А какой в этом смысл?


 
Анна   (2008-01-25 14:11) [3]


> А какой в этом смысл?

У клиента не хочу устанавливать никакого сервера. Но хочу пользоваться возможностями SQL запросов.


 
Ega23 ©   (2008-01-25 14:11) [4]


> У клиента не хочу устанавливать никакого сервера. Но хочу
> пользоваться возможностями SQL запросов.


Так не бывает.
Чтобы и рыбку съесть, и второе действие сделать.


 
Kolan ©   (2008-01-25 14:14) [5]

> второе действие сделать


Чтобы и рыбку съесть, и пользоваться возможностями SQL запросов.
?


 
clickmaker ©   (2008-01-25 14:17) [6]


> не хочу устанавливать никакого сервера. Но хочу пользоваться
> возможностями SQL запросов

это только Local SQL. Но он ограничен


 
Анна   (2008-01-25 14:32) [7]


> clickmaker ©   (25.01.08 14:17) [6]


> это только Local SQL. Но он ограничен

Про  SQL for XML  знаю, что он не поддерживает вложенный оператор SELECT, преобразование данных и т.д.
Подскажите пож-та как корректно записать XML файл? Так же как текстовый? (WriteLn напр.)
Вы написали ClientDataSet. Что и  в каких св=вах надо указать?


 
Sergey13 ©   (2008-01-25 14:37) [8]

> [3] Анна   (25.01.08 14:11)
> У клиента не хочу устанавливать никакого сервера

Существуют [а-ля] встроенные (embedded) сервера. Например FireBird. Не требует инсталяции, но является ПОЛНОЦЕННЫМ SQL сервером.


 
Анна   (2008-01-25 14:47) [9]


> Sergey13 ©   (25.01.08 14:37) [8]

Спасибо, знаю. Но хочу попробовать  через XML! Поэтому и прошу консультаций у вас.


 
Ega23 ©   (2008-01-25 15:08) [10]


> Вы написали ClientDataSet.


TClientDataSet.SaveToFile(FileName, dfXML)


 
Анна   (2008-01-25 15:17) [11]


> TClientDataSet.SaveToFile(FileName, dfXML)

Я так и сделала. Но ругается, т.к. имя поля оч. длинное:
"Fieldname XML_F52E2B61-....   exceeds 31 chars"
ClientDataSet1.FieldDefs.Assign(Q_fish.FieldDefs);
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
Q_fish.first;
while not(Q_fish.Eof) do
begin
 ClientDataSet1.Append;
  for i:=0 to Q_fish.FieldCount-1 do
  begin
   ClientDataSet1.Fields[i].Value:=Q_fish.Fields[i].Value;
  end;
 ClientDataSet1.Post;
 Q_fish.Next;
end;//while
ClientDataSet1.SaveToFile("d:\hhhh",dfXML);


 
Анна   (2008-01-25 16:27) [12]

Если еще кто-ниб ответит к понедельнику по моему вопросу, буду очень благодарна. Хотелось бы получить ответ от sniknik-а.


 
Анна   (2008-01-28 09:16) [13]

Решила поднять свою ветку. Может у кого-нибудь есть опыт работы с XML файлами? Поделитесь пож-та.


 
sniknik ©   (2008-01-28 09:35) [14]

> Хотелось бы получить ответ от sniknik-а.
я не знаю ни одного sql движка работающего с XML.

> Может у кого-нибудь есть опыт работы с XML файлами?
а вот этого полно, как ни отбрыкивался... всегда среди клиентов находятся лохи поверившие в "универсальность" формата и пихающие его куда ни попадя...

у датасетов (ADO/Client) свой формат, универсальности нет, придется конвертировать, более менее всё открывает IDOM Document, но и там заморочки, достаточно большие базы не открывает памяти не хватает (было както прислали базу целиком в одном XML - 2 гб.) и если используется особый парсер (там указывается его гуид в заголовке) а у вас он не установлен то тоже проблема (как правило на "той" стороне даже не понимают, что от них хотят, какой COM щбьект? и как так вы не можете прочитать "универсальный" формат? ....).

если хочеш совета - откажись от XML в качестве базы. максимум на что он способен это передать данные из одного места в другое (и зачастую простейший dbf с этим проще, лучше справляется).


 
Анна   (2008-01-28 09:49) [15]


> sniknik ©   (28.01.08 09:35) [14]

Что Вы можете посоветовать в качестве БД для удаленных клиентов, у которых слабые компьютеры и которые не смогут ничего инсталировать (СУБД). Спасибо за ответ!


 
ketmar ©   (2008-01-28 09:53) [16]

>[15] Анна (28.01.08 09:49)
SQLite, FireBird Embedded.


 
ketmar ©   (2008-01-28 09:54) [17]

хм. мне вот интересно, как стыкуются «слабые компьютеры» и «база в XML». для последнего надо комбайны с кородубами и гигами оперативки…


 
Анна   (2008-01-28 10:04) [18]


> ketmar ©   (28.01.08 09:54) [17]

Про такие требования я не знала. Спасибо.
Читаю про SQLite.


 
Ega23 ©   (2008-01-28 10:09) [19]


> Про такие требования я не знала. Спасибо.


Дык в XML всё хранится в текстовом виде!


 
megabyte ©   (2008-01-28 10:53) [20]

XML удобен только как промежуточный формат между различными источниками, но не как замена СУБД!
Юзай Firebird.


 
Плохиш ©   (2008-01-28 11:11) [21]


> если хочеш совета - откажись от XML в качестве базы. максимум
> на что он способен это передать данные из одного места в
> другое


Во-во, он для этого и задумывался...


 
ketmar ©   (2008-01-28 11:24) [22]

>[18] Анна (28.01.08 10:04)
если не надо сетевых наворотов и не особо пугает написание своего dataset/работа с базой «ручками» — SQLite вполне удобен. лицензиями не прикрыт, занимает мало, работает быстро, всех файлов — одна DLL. FireBird Embedded чуть сложнее.


 
ketmar ©   (2008-01-28 11:26) [23]

>[21] Плохиш ©(28.01.08 11:11)
>Во-во, он для этого и задумывался…

но как всегда ничего не вышло. %-)


 
palva ©   (2008-01-28 12:26) [24]

Имеются XML-серверы.
http://www.bytemag.ru/?ID=601790
С Tamino я возился около полугода в одной конторе. Но давно уволился оттуда. А теперь смотрю на сайт разработчиков
http://www1.softwareag.com/de/products/default.asp
и вижу, что Tamino из списка продуктов исчез. Наверно прикрыли этот проект. Или может пополнили XML-функциональностью ADABAS.
Имеются другие варианты XML-серверов. В интернете несложно найти информацию. Но, наверняка, сырые либо очень дорогие, как Tamino.


 
ketmar ©   (2008-01-28 12:30) [25]

>[24] palva©(28.01.08 12:26)
да они-то есть. только конфликтуют с требованием «слабые машины». %-)


 
Ega23 ©   (2008-01-28 13:03) [26]

sedna есть. Опенсорсная даже, вроде. На базе XML. Как я понял, один из побочных продуктов С.Д.Кузнецова (по крайней мере, на КБД он очень активно про неё рассказывал, я так понял, что он там типа куратора...)


 
Анна   (2008-01-29 12:12) [27]

Спасибо большое за ответы.
Решила попробовать использовать Ecxel как БД. В Enterprise Manager сделала экспорт данных части таблицы в файл Excel (aa.xls) Далее в программе написала:
ADOConnection2.ConnectionString:=Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=NO"",["D:\Select_IZ_EXCEL\aa.xls"]);
ADOConnection2.Open;
ADODataSet2.Connection := ADOConnection2;
ADODataSet2.CommandText :=
     "SELECT * FROM [Results$]"#10 +
     "where [id_ops]=22160  order by 1";
ADODataSet2.Open;
ругается :"Параметр [id_ops] не имеет значения по умолчанию".
если пишу запрос без условия Where тот все выполняется. Если пишу where 1=1 то тоже все проходит.
Как грамотно написать условие Where?


 
homm ©   (2008-01-29 12:16) [28]

> [27] Анна   (29.01.08 12:12)
> Решила попробовать использовать Ecxel как БД.

Застрелиться…
Тебе всю етку о чем говорили? Что текстовой базы данных нормально й нет и быть не может, ты выбрала мыло вместо шила. Удачи.


 
sniknik ©   (2008-01-29 12:53) [29]

> HDR=NO
параметр убирает заголовки, т.е. значение первой строки не будет восприниматься как название поля, и тем не менее
> where [id_ops]
обращение идет по имени... которого нет (сам поставил), а все чего нет jet может воспринять параметром (если оно в нужном месте. аксесс в этом случае делает запрос значения для параметра и подставляет), вот тебе и ошибка (ты его подставляешь?...).

но, это все ерунда, можно не обращать внимания, главное - вместилище для базы опять выбрано не удачно (впечатление такое что у тебя есть список наименее подходящих для баз форматов и ты идешь по списку... следующим наверное будет парадокс ;о)).


 
Галинка ©   (2008-01-29 13:29) [30]

если уж эксель, то может лучше акцесс? Или его в лицензии офиса нет?


 
Анна   (2008-01-29 15:00) [31]


> sniknik ©   (29.01.08 12:53) [29]

Спасибо большое, поставила Yes - все запросы к Excel проходят.
> следующим наверное будет парадокс


парадокса не будет :-) И DBF - файлы очевидно тоже нет, т.к. гл. специалист почему-то категорически против. А мне они нравятся.
А задача такая: клиентов около 150, у всех разные ПК, разные Window-s, никакого опыта (и желания) в сопровождении и поддержки БД, поэтому нужно чтобы был всего лишь один файл .exe и, например,  один файл Exсel - содержащий на n-листах n таблиц.
читала про SQLite. Правильно ли я поняла, что чтобы работать с ним нужно присоединить в свой проект только один .DLL файл?
Да, еще. Клиентам нужно разослать по электронной почте .exe , т.е. никаких выездов к ним для установки СУБД и пр.


 
homm ©   (2008-01-29 15:06) [32]

> [31] Анна   (29.01.08 15:00)
> А задача такая: клиентов около 150, у всех разные ПК, разные
> Window-s,

Но почему то ты уверена, что у каждого стоит недешевый пакет Microsoft Office, ага?


> Правильно ли я поняла, что чтобы работать с ним нужно присоединить
> в свой проект только один .DLL файл?

Емлить… ДА!!!! Тебе это 100 раз написали.


 
DiamondShark ©   (2008-01-29 15:09) [33]


> Анна   (28.01.08 09:49) [15]
>
> Что Вы можете посоветовать в качестве БД для удаленных клиентов,
>  у которых слабые компьютеры и которые не смогут ничего
> инсталировать (СУБД).

access


 
homm ©   (2008-01-29 15:12) [34]

> [33] DiamondShark ©   (29.01.08 15:09)
> access

access НАДО инсталлировать!


 
DiamondShark ©   (2008-01-29 15:17) [35]


> access НАДО инсталлировать!

Всё надо инсталлировать.
Просто кое-что надо инсталлировать потом и руками, а кое что инсталлируется вместе с системой, как, например, ядро Jet, OLE-DB провайдеры для баз акцеса и библиотеки объектов ADO.


 
Kolan ©   (2008-01-29 15:18) [36]

> было както прислали базу целиком в одном XML — 2 гб.)

Даже ветка была вроде.


> Что Вы можете посоветовать в качестве БД для удаленных клиентов,
> у которых слабые компьютеры и которые не смогут ничего
> инсталировать (СУБД).

Есть еще BlackFish


 
homm ©   (2008-01-29 15:20) [37]

> [35] DiamondShark ©   (29.01.08 15:17)
> Всё надо инсталлировать.

Не все надо инсталлировать. Кое что способно работать искоропки.


 
Anatoly Podgoretsky ©   (2008-01-29 15:22) [38]


> access

Он тоже очень прожорливый, а XML ну его нафиг.
Я уже рассказывал историю экспорта из одной старой базы через XML
через 5 дней вырубили, сделали экспорт через dbf (foxpro) - 20 минут.
XML это штука прожорливая, как на ресурсы компьютера, так и на ресурсы хранения. Единственное применение вижу для экспорта в те системы, где иначе нельзя.


 
sniknik ©   (2008-01-29 15:25) [39]

> Клиентам нужно разослать по электронной почте .exe , т.е. никаких выездов к ним для установки СУБД и пр.
это уже зависит больше не от движка, а от программиста... т.е. вам нужен программист.

> что у каждого стоит недешевый пакет Microsoft Office, ага?
офис не нужен, во всяком случае пока не решать делать в екселе отчеты с форматированиями через OLE. jet работает без него, и установлен он в последнее время практически на любой винде (а там где нет (спец версия 98й без DCOM-а, NT, ... не помню. на висте не пробовал, не приходилось) может быть легко уставлен)

другое дело сам формат, базой назвать можно только условно. (индексов нет! о чем еще говорить)
а предлагаемый вполне нормальный вариант - акцесс [30], на том же движке, почемуто проигнорирован.


 
homm ©   (2008-01-29 15:25) [40]

> [38] Anatoly Podgoretsky ©   (29.01.08 15:22)
> Единственное применение вижу для экспорта в те системы,
> где иначе нельзя.

Обмен данных — отличное применение. Счас курю мануалы по CommerceML. Нужно заинтегрированть сайт с 1С. Там ему лучшее применение. Принял, пропарсил, добавил, нормально. Но что бы работать с ним постоянно, как с базой, нафиг, нафиг.


 
homm ©   (2008-01-29 15:26) [41]

> [39] sniknik ©   (29.01.08 15:25)
> офис не нужен, во всяком случае пока не решать делать в
> екселе отчеты с форматированиями через OLE. jet работает
> без него

А теперь посмотри к чему был комментари, и скажи, какой нафиг jet ?


 
sniknik ©   (2008-01-29 15:31) [42]

> access НАДО инсталлировать!
для работы с базой (mdb) не надо.

> Не все надо инсталлировать. Кое что способно работать искоропки.
ага. jet включен в винду (коропку) начиная с 2000го. (правда есть пиратские копии ХР в который есть апдейт SP7, но нет самого... т.е. он и не ставится дальше и не работает... один раз на такой напарывался)


 
sniknik ©   (2008-01-29 15:33) [43]

> А теперь посмотри к чему был комментари, и скажи, какой нафиг jet ?
ты лучше его спроси, что он подразумевал под своим "access"... 98% даю что не программу.


 
DiamondShark ©   (2008-01-29 15:35) [44]


> homm ©   (29.01.08 15:26) [41]
> А теперь посмотри к чему был комментари, и скажи, какой
> нафиг jet ?

Такой нафиг jet, что движок jet умеет работать с листами Ехеля как с хранилищами и без установленного ехеля.


> homm ©   (29.01.08 15:20) [37]
> > [35] DiamondShark ©   (29.01.08 15:17)
> > Всё надо инсталлировать.
>
> Не все надо инсталлировать. Кое что способно работать искоропки.

Угу. Например, программа, использующая ядро jet, так может.


 
homm ©   (2008-01-29 15:36) [45]

> [43] sniknik ©   (29.01.08 15:33)
> ты лучше его спроси, что он подразумевал под своим "access"...

А ты лучше посмотри, что это был коммент на пост Анны [31] с учетом [27]. Она вобще-то выбрала для «клиентов которых около 150, у всех разные ПК, разные Window-s» в качестве базы данных Excel.


 
DiamondShark ©   (2008-01-29 15:37) [46]


> ты лучше его спроси, что он подразумевал под своим "access".

mdb хранилище, разумеется.


 
homm ©   (2008-01-29 15:37) [47]

> [44] DiamondShark ©   (29.01.08 15:35)
> Такой нафиг jet, что движок jet умеет работать с листами
> Ехеля как с хранилищами и без установленного ехеля.

Мне его жалко тогда :(


 
sniknik ©   (2008-01-29 15:40) [48]

> А теперь посмотри к чему был комментари, и скажи, какой нафиг jet ?
хотя, посмотрел. это было на

>> [31] Анна   (29.01.08 15:00)
>> А задача такая: клиентов около 150, у всех разные ПК, разные
>> Window-s,

> Но почему то ты уверена, что у каждого стоит недешевый пакет Microsoft Office, ага?

и с чего ты решил что данная фраза про клиентов и виндовс означает использование на них Microsoft Office? и использования его в своей программе.
воображение хорошее или телепатор?


 
DiamondShark ©   (2008-01-29 15:43) [49]


> homm ©   (29.01.08 15:37) [47]
>
> Мне его жалко тогда :(

Ну, это -- личное, и к делу не относится.
Тем более, что вариант с экселем был дружно забит подушками.
А вот базы акцеса -- вполне подходящий вариант для не шибко навороченного приложения.


 
homm ©   (2008-01-29 15:43) [50]

> [48] sniknik ©   (29.01.08 15:40)
> воображение хорошее или телепатор?

Я думал jet это только access.


 
sniknik ©   (2008-01-29 15:43) [51]

> в качестве базы данных Excel.
и что? Excel один из исамов jet, точно также не требует присутствие программы Excel.


 
sniknik ©   (2008-01-29 15:44) [52]

> Я думал jet это только access.
access это ядро. и "родной" формат, а исамов там куча.


 
homm ©   (2008-01-29 15:44) [53]

> [49] DiamondShark ©   (29.01.08 15:43)
> А вот базы акцеса -- вполне подходящий вариант для не шибко
> навороченного приложения.

Ну с этим более менее согласен, при условии что неплохо было бы еще пакетик с jet-ом прикрутить в дистрибьютив.


 
Галинка ©   (2008-01-29 18:24) [54]

если кто знает, кинте ссылкой на бесплатную версию оракла. Пусть урезанную. Хочу просто попробовать.


 
Anatoly Podgoretsky ©   (2008-01-29 18:36) [55]

> Галинка  (29.01.2008 18:24:54)  [54]

www.oracle.com


 
Галинка ©   (2008-01-29 18:45) [56]

спасибо



Страницы: 1 2 вся ветка

Текущий архив: 2008.02.24;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.014 c
3-1191778975
3Lander
2007-10-07 21:42
2008.02.24
Вопрос по работе с IBX


2-1201507003
sergeii
2008-01-28 10:56
2008.02.24
Подсчёт разницы дат


8-1174297899
San ciz
2007-03-19 12:51
2008.02.24
"Невидимое окно"


15-1201073995
vajo
2008-01-23 10:39
2008.02.24
Как на ноутбуке переустановить Виндовс?


3-1191840957
Winter
2007-10-08 14:55
2008.02.24
Значение поля после INSERT