![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Научите работать с XML как с SQL? Если такое возможно?
Layner © (2004-04-16 14:23:00)Т.е. я сейчас парсирую XML файлы на уровне текста {:(} А возможно ли задать запрос, и он вытащит данные в виде таблицы на DBGrid, как ADO Query например возвращает в DBGrid результат выборки.
Layner (2004-04-20 15:12:00) [1]Может SimpleDataSet1, вроде что то позволяет делать с XML.
Ломброзо (2004-04-20 15:06:00) [2]Завалялся у меня сохранённый топик с RSDN:
А>Здравствуйте, Andrey Makarov aka Zig, Вы писали:
AMA>>Здравствуйте, Аноним, Вы писали:
А>>>Требуется:
А>>>Иметь возможность дублировать несколько таблиц в XML формат (в разделе INI- файла думается)
А>>>При отсутствии доступа к СУБД считывать информацию, необходимую для работы программы с XML - из файла.
А>>>Иметь по возможности одинаковый доступ как к СУБД так и к XML - в смысле вычитавать информацию select-ами.
AMA>>с селектами не получится, у XMLя нет такого функционала. это не СУБД - это всего лишь язык разметки
А>>>Подскажите кто чем может, что применять, с XML никогда не работал, имею только представление
AMA>>рекомендую представление заменить на знания, а потом уже пытаться пристроить технологию в жизнь
А>>>Т.е. сейчас программа читает данные с СУБД, производит некие действия и пишет результат в базу. Хочется иметь возможность работы при временой недоступности СУБД. Т.е. результат при отстутствии СУБД будет скидываться в буферный файл, при появлении перекидываться в базу.
А>>>При отсутствии СУБД нормативная информация будет читаться с XML.
AMA>>в целом, система реализуема, схема вполне жизнеспособна
А>Сделано: (код упрощен)
А>TESTHR(CnAdoPtrReadMod.CreateInstance(__uuidof(Connection)));
А>TESTHR(rs.CreateInstance(__uuidof(Recordset)));
А>CnAdoPtrReadMod->Open(ConnectStr,""/*strMissing*/, "", adConnectUnspecified);
rs->>CursorType = adOpenKeyset;
rs->>LockType = adLockOptimistic;
А>CnAdoPtrReadMod->CommandTimeout= ConTimeOut;
rs->>Open(Cmd,_variant_t((IDispatch *)CnAdoPtrReadMod,true),/*adOpenKeyset*/adOpenForwardOnly,adLockOptimistic,adCmdText);
rs->>Save("c:\\Modulesdata.xml",adPersistXML); //Вот тут записали xml
А>//Если у субд не подключились, читаем recordset так:
А>//
А>CnAdoPtrReadMod->Open("Provider=MSDAOSP; Data Source=MSXML2.DSOControl.2.6;",""/*strMissing*/, "", adConnectUnspecified);
rs->>Open("c:\\Modulesdata.xml",_variant_t((IDispatch *)CnAdoPtrReadMod,true),adOpenForwardOnly,adLockOptimistic,adPersistXML);
А>//до сюда все ок, но при поытке выбирать из рекорсета - фигу
А>while(!rs->EndOfFile){
А> Id = (short)rs->Fields->GetItem((short)0)->Value;
А>...
А>}
А>я хочу, чтобы код выборки данных был один и тот же при чтении и из xml и из СУБД
А>Я на правильном пути? Может быть что то не так с флагами открытия?
А>Я так понимаю слепок recorset сделанный из субд и открытый из xml будут идентичны при проходе по recordset ?
А>Подскажите, где промах или идейные заблуждения
MSDN в общем как всегда RTFM
rs->Open("c:\\Modulesdata.xml","Provider=MSPersist;",adOpenForwardOnly,adLockOptimistic,adCmdFile);
В Delphi подключаться через TADOQuery я не пробовал, в VB через AdoControl + VideoSoft Flex Grid - работает.
Layner (2004-04-20 15:03:00) [3]Ломброзо
Подскажи, плз, как подконектится к файлу, с помощью Microsoft OLE DB Simple Provider?
Далаю UDL файл, с выбором Microsoft OLE DB Simple Provider, в DataSourse пишу название файла, тест... и никак..
Ломброзо (2004-04-16 23:23:00) [4]Microsoft OLE DB Simple Provider. Позволяет работать с XML как с таблицей и выполнять простенькие SQL (не XPath) запросы, если в качетсве источника данных ему указать XML-файл. Я с ним не работал, так, поигрался чуть-чуть... Инсерты он делать не позволяет, апдейты - точно не скажу.
Подробности в MSDN.
Sergey_Masloff (2004-04-16 16:16:00) [5]xpath не то?
Соловьев (2004-04-16 15:43:00) [6]TCustomClientDataSet.LoadFromFile
Delirium (2004-04-16 15:37:00) [7]О каком именно XML речь ?