Текущий архив: 2006.01.15;
Скачать: CL | DM;
Вниз
База данных XML Найти похожие ветки
← →
Kostafey © (2005-12-25 21:34) [0]Есть некоторая относительно не сложная БД в формате XML (получена путем экспорта из Access). Нужно получить к ней дотуп через Delphi-приложение. Только и всего. А как ?
← →
sniknik © (2005-12-25 21:58) [1]зря делал экспорт. с аксесной базой работать проще чем с xml.
← →
Kostafey © (2005-12-26 21:16) [2]
> зря делал экспорт. с аксесной базой работать проще чем с
> xml.
Ох. Да. Не спорю задание просто такое. Вот.
← →
Kostafey © (2005-12-26 21:20) [3]Впрос на само деле должен звучать: где взять для Delphi распознавлку текста этого самого XML- ного фаула БД ?
← →
Kostafey © (2005-12-26 21:26) [4]УВАЖАЕМЫЕ АДМИНЫ !!!
Можно этот вопрос в раздел "Базы данных" перекинуть, а то мне тут похоже ничего не светит...
← →
alex_*** © (2005-12-26 21:26) [5]через DOM лучше не делать, по кр. мере. Очен долго, если размер базы большой. Нужен событийный парсер типа XMLReader как в C#. Парсеров много всяких, поищи поисковиком
← →
Kostafey © (2005-12-26 21:31) [6]Да ты понимешь я в XML как в китайском разбираюь.
Боюсть, что 99% процентов парсеров на Java ориентированы
← →
alex_*** © (2005-12-26 21:48) [7]Бояться нечего, заходишь на торри и ищешь парсеры. Может кто что-ть конкретно посоветует. Я с XML в D7 только через DOMInterface работал, что тормознуто
← →
Kostafey © (2005-12-26 22:05) [8]DOMInterface - набираю по яндексу, рамблеру - ничего толкового.
кто -нибудь может подсказать ссылку, где бы по этому вопросу таким деревоголовым было бы по-простому рассказано ?
← →
palva © (2005-12-26 22:12) [9]Я понял так что нужно ведь не парсить XML, а получить доступ к BD. Если XML-файл получен в результате выполнения ADORecordset.Save, то его можно загрузить обратно в рекордсет методом Open, а потом работать с Recordset обычным для ADO образом.
← →
alex_*** © (2005-12-26 22:12) [10]unit xmldom;
← →
Kostafey © (2005-12-26 22:19) [11]
> palva © (26.12.05 22:12) [9]
>
> Я понял так что нужно ведь не парсить XML, а получить доступ
> к BD. Если XML-файл получен в результате выполнения ADORecordset.
> Save, то его можно загрузить обратно в рекордсет методом
> Open, а потом работать с Recordset обычным для ADO образом.
>
Не совсем. Файл получен экспортом из самой среды Access, а что разве можно получить к базе формата XML доступ исползуя просто ADO компоненты? А КАК ????
← →
palva © (2005-12-26 22:29) [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 файл. Такой файл имеется ввиду?
← →
palva © (2005-12-26 22:37) [13]И такой файл можно загрузить в рекордсет и использовать. Например, загружаю, продвигаюсь на 10 запись и смотрю 1-е поле:
Set rs = CreateObject("ADODB.Recordset")
rs.Open "table1.xml", , 0, 1, 256
rs.Move 10
MsgBox rs(0)
Извиняюсь за плебейский VBS. Все это один в один можно сделать на делфи, только кода будет немного больше.
← →
Kostafey © (2005-12-26 22:45) [14]
> У меня Access 2000. Я стою на таблице открытой базы данных
> по правой кнопке вызываю Export. И что-то я не вижу в списке
> типов XML. Базы данных всякого формата вижу, а XML нет.
> Зато если я выполняю такой VBS:
У меня Access 2002. В списке типов файла экспорта есть "Документ XML"
> Извиняюсь за плебейский VBS. Все это один в один можно сделать
> на делфи, только кода будет немного больше.
OK! А где можно взять описание Delphi-йкского кода для ентого ???
← →
palva © (2005-12-26 23:18) [15]> А где можно взять описание 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.
← →
palva © (2005-12-26 23:19) [16]Если конечно, данный код будет правильно работать с вашим файлом. Я так и не понял, в каком виде экспортирован файл.
← →
Kostafey © (2005-12-26 23:28) [17]
> Я так и не понял, в каком виде экспортирован файл.
table1.XVL - собственно данные.
table1.XSD - описание формата данных.
Вообще это тоже вопрос хороший.
Экспортировать пожалуй лучше по таблицам отдельно.
Можно, например, эскспортировать запрос на выборку всех данных из всех таблиц. Тогда получиться как в Access - 1 файл - БД, но как с таким работать ?
> ds := CreateOleObject("ADODB.Recordset");
Ну хорошо, получим например обеъект ADODB.Recordset. С него ужне можно будет получать данные непосредственно в DataSource ?
Да, и как тогода получить сам формат данных (структуру таблицы)?
← →
palva © (2005-12-26 23:48) [18]С этим форматом не знаком. Файлы которые сохраняются из ADO, успешно загружаются тоже в ADO. А ваш формат нужно использовать из той программы, которая его создала. Может быть попробовать запустить из Delphi Access в режиме автоматизации? Но с Access 2002 не знаком, ничего путного посоветовать не могу.
← →
Kostafey © (2005-12-26 23:53) [19]
> Может быть попробовать запустить из Delphi Access в режиме
> автоматизации?
Не совсем понял что значит режим автоматизации ?
Пhедполагаю, что речь идет о том, чтобы экспортировать из самой Delphi подключенныую к ней базу так ?
← →
palva © (2005-12-26 23:58) [20]> Не совсем понял что значит режим автоматизации ?
> Пhедполагаю, что речь идет о том, чтобы экспортировать из самой Delphi подключенныую к ней базу так ?
Нет, это когда Access работает под управлением программы на Delphi. Откровенно говоря, не знаю, возможно ли это.
← →
Kostafey © (2005-12-27 00:15) [21]
> Нет, это когда Access работает под управлением программы
> на Delphi. Откровенно говоря, не знаю, возможно ли это.
Ладно ни к чему в таке дебри лезть. Все рано Delphi использует свои dll - файлы для доступа к БД Access - файлу.
Но как тогда должна выглядеть "нормальная" XML - база данных.
Черт и ним, пусть даже сделанная в ручную ?
В ней где- то должны храниться данные о структуре таблицы
← →
palva © (2005-12-27 00:31) [22]XML-файлы это не база данных. Для работы с XML, как с базой данных нужен XML-сервер. Например такой:
http://www.softwareag.com/Corporate/products/tamino/prod_info/default.asp
Если вам нужна база данных, то работайте с данными в Access, а выгруженные файлы это всего лишь файлы. Их можно просматривать, но искать в них или модифицировать - извините, - очень трудоемко.
← →
Kostafey © (2005-12-27 00:46) [23]
> XML-файлы это не база данных.
Спору нет. Как и сказал просто задача так была поставлена (спорно).
Ладно.
Спасибо за помошь !
Вернусь к этому вопросу позже !
Страницы: 1 вся ветка
Текущий архив: 2006.01.15;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.013 c