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

Вниз

База данных 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.014 c
2-1135428146
DIS
2005-12-24 15:42
2006.01.15
Webbrowser Перехватить нажатие на элемементе submit


14-1134594311
(CHALING 32)S K i N E R
2005-12-15 00:05
2006.01.15
Голосовой чат по сети!


2-1135717341
Freezz
2005-12-28 00:02
2006.01.15
работа с записями


2-1134550192
uzver.exe
2005-12-14 11:49
2006.01.15
Помогите решить плиз...


5-1120890863
[NightGhost]
2005-07-09 10:34
2006.01.15
Компоненты в стиле WinXP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский