Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

запись 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С. Там ему лучшее применение. Принял, пропарсил, добавил, нормально. Но что бы работать с ним постоянно, как с базой, нафиг, нафиг.



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

Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.042 c
2-1201546095
noi
2008-01-28 21:48
2008.02.24
перевести данные из pChar в array of Byte


2-1201691592
Kolan
2008-01-30 14:13
2008.02.24
Как синхронизировать прокрутку двух StringGrid?


2-1201777548
NetSkipper
2008-01-31 14:05
2008.02.24
Приведение типов


15-1201100303
БарЛог
2008-01-23 17:58
2008.02.24
Самый лучший поисковик


15-1200776703
Riply
2008-01-20 00:05
2008.02.24
Рекурсивная работа с FindFirst/Next





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский