Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.045 c
9-1122920321
FRick
2005-08-01 22:18
2006.01.15
Создание игровых уровней!


2-1135331222
РУДЗ
2005-12-23 12:47
2006.01.15
Использование ShortCut


14-1134838711
Катерина
2005-12-17 19:58
2006.01.15
RichEdit


8-1123374084
shadowgoga
2005-08-07 04:21
2006.01.15
Проиграть wav-файл "по кругу".


9-1114877437
Warchief
2005-04-30 20:10
2006.01.15
PD3 - Рендер в текстуру