Форум: "Начинающим";
Текущий архив: 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