![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
База данных XML [D7, XP]
Kostafey © (2005-12-25 21:34:00)Есть некоторая относительно не сложная БД в формате XML (получена путем экспорта из Access). Нужно получить к ней дотуп через Delphi-приложение. Только и всего. А как ?
Kostafey (2005-12-27 00:46:00) [1]
> XML-файлы это не база данных.
Спору нет. Как и сказал просто задача так была поставлена (спорно).
Ладно.
Спасибо за помошь !
Вернусь к этому вопросу позже !
palva (2005-12-27 00:31:00) [2]XML-файлы это не база данных. Для работы с XML, как с базой данных нужен XML-сервер. Например такой:
http://www.softwareag.com/Corporate/products/tamino/prod_info/default.asp
Если вам нужна база данных, то работайте с данными в Access, а выгруженные файлы это всего лишь файлы. Их можно просматривать, но искать в них или модифицировать - извините, - очень трудоемко.
Kostafey (2005-12-27 00:15:00) [3]
> Нет, это когда Access работает под управлением программы
> на Delphi. Откровенно говоря, не знаю, возможно ли это.
Ладно ни к чему в таке дебри лезть. Все рано Delphi использует свои dll - файлы для доступа к БД Access - файлу.
Но как тогда должна выглядеть "нормальная" XML - база данных.
Черт и ним, пусть даже сделанная в ручную ?
В ней где- то должны храниться данные о структуре таблицы
palva (2005-12-26 23:58:00) [4]> Не совсем понял что значит режим автоматизации ?
> Пhедполагаю, что речь идет о том, чтобы экспортировать из самой Delphi подключенныую к ней базу так ?
Нет, это когда Access работает под управлением программы на Delphi. Откровенно говоря, не знаю, возможно ли это.
Kostafey (2005-12-26 23:53:00) [5]
> Может быть попробовать запустить из Delphi Access в режиме
> автоматизации?
Не совсем понял что значит режим автоматизации ?
Пhедполагаю, что речь идет о том, чтобы экспортировать из самой Delphi подключенныую к ней базу так ?
palva (2005-12-26 23:48:00) [6]С этим форматом не знаком. Файлы которые сохраняются из ADO, успешно загружаются тоже в ADO. А ваш формат нужно использовать из той программы, которая его создала. Может быть попробовать запустить из Delphi Access в режиме автоматизации? Но с Access 2002 не знаком, ничего путного посоветовать не могу.
Kostafey (2005-12-26 23:28:00) [7]
> Я так и не понял, в каком виде экспортирован файл.
table1.XVL - собственно данные.
table1.XSD - описание формата данных.
Вообще это тоже вопрос хороший.
Экспортировать пожалуй лучше по таблицам отдельно.
Можно, например, эскспортировать запрос на выборку всех данных из всех таблиц. Тогда получиться как в Access - 1 файл - БД, но как с таким работать ?
> ds := CreateOleObject('ADODB.Recordset');
Ну хорошо, получим например обеъект ADODB.Recordset. С него ужне можно будет получать данные непосредственно в DataSource ?
Да, и как тогода получить сам формат данных (структуру таблицы)?
palva (2005-12-26 23:19:00) [8]Если конечно, данный код будет правильно работать с вашим файлом. Я так и не понял, в каком виде экспортирован файл.
palva (2005-12-26 23:18:00) [9]> А где можно взять описание Delphi-йкского кода для ентого ???
Переписать на делфи:
{$APPTYPE CONSOLE}
uses
Variants, ActiveX, ComObj;
var
ds: OleVariant;
begin
CoInitialize(Nil);
ds := CreateOleObject('ADODB.Recordset');
ds.Open('table1.xml', , 0, 1, 256);
ds.Move(10);
WriteLn(ds.Fields[0]);
ds.Close;
ds := Unassigned;
writeln('OK');
end.
Но это не лучший вариант. Корректнее экспортировать TLB из ADO и использовать дельфийский unit.
Kostafey (2005-12-26 22:45:00) [10]
> У меня Access 2000. Я стою на таблице открытой базы данных
> по правой кнопке вызываю Export. И что-то я не вижу в списке
> типов XML. Базы данных всякого формата вижу, а XML нет.
> Зато если я выполняю такой VBS:
У меня Access 2002. В списке типов файла экспорта есть "Документ XML"
> Извиняюсь за плебейский VBS. Все это один в один можно сделать
> на делфи, только кода будет немного больше.
OK! А где можно взять описание Delphi-йкского кода для ентого ???
palva (2005-12-26 22:37:00) [11]И такой файл можно загрузить в рекордсет и использовать. Например, загружаю, продвигаюсь на 10 запись и смотрю 1-е поле:
Set rs = CreateObject("ADODB.Recordset")
rs.Open "table1.xml", , 0, 1, 256
rs.Move 10
MsgBox rs(0)
Извиняюсь за плебейский VBS. Все это один в один можно сделать на делфи, только кода будет немного больше.
palva (2005-12-26 22:29:00) [12]У меня Access 2000. Я стою на таблице открытой базы данных по правой кнопке вызываю Export. И что-то я не вижу в списке типов XML. Базы данных всякого формата вижу, а XML нет. Зато если я выполняю такой VBS:
Set cn = CreateObject("AdoDB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Db.mdb"
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM table1", cn, 0, 1
rs.Save "table1.xml", 1
то я получаю XML файл. Такой файл имеется ввиду?
Kostafey (2005-12-26 22:19:00) [13]
> palva © (26.12.05 22:12) [9]
>
> Я понял так что нужно ведь не парсить XML, а получить доступ
> к BD. Если XML-файл получен в результате выполнения ADORecordset.
> Save, то его можно загрузить обратно в рекордсет методом
> Open, а потом работать с Recordset обычным для ADO образом.
>
Не совсем. Файл получен экспортом из самой среды Access, а что разве можно получить к базе формата XML доступ исползуя просто ADO компоненты? А КАК ????
alex_*** (2005-12-26 22:12:00) [14]unit xmldom;
palva (2005-12-26 22:12:00) [15]Я понял так что нужно ведь не парсить XML, а получить доступ к BD. Если XML-файл получен в результате выполнения ADORecordset.Save, то его можно загрузить обратно в рекордсет методом Open, а потом работать с Recordset обычным для ADO образом.
Kostafey (2005-12-26 22:05:00) [16]DOMInterface - набираю по яндексу, рамблеру - ничего толкового.
кто -нибудь может подсказать ссылку, где бы по этому вопросу таким деревоголовым было бы по-простому рассказано ?
alex_*** (2005-12-26 21:48:00) [17]Бояться нечего, заходишь на торри и ищешь парсеры. Может кто что-ть конкретно посоветует. Я с XML в D7 только через DOMInterface работал, что тормознуто
Kostafey (2005-12-26 21:31:00) [18]Да ты понимешь я в XML как в китайском разбираюь.
Боюсть, что 99% процентов парсеров на Java ориентированы
alex_*** (2005-12-26 21:26:00) [19]через DOM лучше не делать, по кр. мере. Очен долго, если размер базы большой. Нужен событийный парсер типа XMLReader как в C#. Парсеров много всяких, поищи поисковиком
Kostafey (2005-12-26 21:26:00) [20]УВАЖАЕМЫЕ АДМИНЫ !!!
Можно этот вопрос в раздел "Базы данных" перекинуть, а то мне тут похоже ничего не светит...