Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизКак сжать dbf с помощью TADOTable? Найти похожие ветки
← →
danja12 (2006-08-16 17:32) [0]Надо перейти с BDE в ADO. В BDE было
Table.EmptyTable
. В ADO, вроде надо:ADOTable.DeleteRecords(arAll)
но приводит к ошибке "Операция невозможна в данном контексте", при этомADOTable.Supports([coDelete])
покаывает True. Удалять каждую запись в цикле очень долго, да и записи только помечаются на удаление, а надо получить пустую таблицу. Подскажите, кто знает. Спасибо.
← →
Lexiy (2006-08-16 17:34) [1]на сколько я знаю работа с дбф вообще очень долгая штука :) и возможно только так ну или создать шаблон и брать его пустой
← →
danja12 (2006-08-16 17:37) [2]> возможно только так ну или создать шаблон и брать его пустой
Это для ADO?
Напоминаю, в BDE EmptyTable работала со свистом.
???
← →
Lexiy (2006-08-16 17:38) [3]тьфу пардон не так прочитал :) а если дроп и криат заново ?
← →
clickmaker © (2006-08-16 18:40) [4]
> Напоминаю, в BDE EmptyTable работала со свистом
дык борландеры изначально затачивали БДЕ под дбф-парадокс. А ADO - это MS, это "совсем другая тема"
← →
Anatoly Podgoretsky © (2006-08-16 19:07) [5]Использовать OLE DB провайдера для Визуал ФоксПро и его команды. По списку команд в документацию по ФоксПро.
Альтернативным вариантом является создание таблицы с нуля, тоже занимает миллисекунды.
Удаление записей это не очистка таблицы, оно ничего общего с операцией EmptyTable не имеет.
← →
danja12 (2006-08-17 09:16) [6]> Anatoly Podgoretsky
Удаление записей это не очистка таблицы, оно ничего общего с операцией EmptyTable не имеет.
С этого места по-подробней, пожалуйста. В табличку, которую надо очистить, пишутся промежуточные результаты. EmptyTable делает, как раз то, что надо - пустую таблицу. Как еще это можно сделать? Удалить все и сжать - раз. Написать новую пустую таблицу - два.
Из моего первого сообщения, по-моему, понятно, что именно это мне инужно. Так что, что удаление, что очистка - мне все едино (в данном случае).
> Использовать OLE DB провайдера для Визуал ФоксПро и его команды.
А его отдельно надо ставить? Причина перехода с BDE в ADO именно в этом.
← →
sniknik © (2006-08-17 10:10) [7]> С этого места по-подробней, пожалуйста.
начни с изучения основ... файл серверного/клиент серверного подхода, и их различия. но только учить основы надо не сдесь (будет долго, нудно, безрезультатно... и вообще флуд). купи книжку.
потому что ты пытаешся методы одного подхода "притянуть" к другому (чему борланд кстати поспособствовал, сделав эти свои "переходники").
> Как еще это можно сделать? Удалить все и сжать - раз.
это делается командами движка (VFP в твоем случае) посредством sql, а ADOTable ... ну он "немного" не для этого...
команды движка/sql сервера, описания ищутся в мануалах по движку/серверу, ADO это только посредник между вами.
удалить все - DELETE FROM Table1
сжать - PACK TABLE Table1
это если нужный провайдер используется... но в большинстве случаев быстрее работает "дроп" табле, и создание ее заново. у других движков даже команд таких "упаковочных" нет (наверное для того чтобы делали все сразу правильно ;), у фокса есть, но только потому что были всегда... исторически так сложилось.
> А его отдельно надо ставить? Причина перехода с BDE в ADO именно в этом.
если его нет обязательно! а его нет, в новых виндах точно. (ODBC уже не ставятся OLEDB еще ... ;о))), в старых включался ODBC драйвер в поставку виндов, ну и по моему мсофис их доставлял, ежели что. т.что. закладываться на то что они там обязательно есть нельзя...
← →
Lexiy (2006-08-17 10:19) [8]+7 вах как сказал!!!
← →
danja12 (2006-08-17 11:11) [9]> Lexiy: +7 вах как сказал!!!
Точно :) Аж, завидно стало :)
> sniknik: начни с изучения основ...
Учится, оно, конечно, всегда надо. Но проясню ситуацию: я не пишу базы, я пишу графику. Ну, надо мне, на объекты из карты выдать на просмотр соответствующие строки из базы. Соответствие обеспечивается идентификаторами объектов. Когда можно было пользоваться BDE, я слепил это за пару дней без всяких специальных знаний и не лазая вглубь. И надо бы лезть, да некогда. Теперь начальство сказало: чтоб BDE убрать и ставить больше ничего нельзя. Пошел и тупо заменил TQuery на TADOQuery, а TTable на TADOTable и теперь правлю вылезшие различия в свойствах и методах. С Query все прошло гладко, c Table - нет. Вот такая песня. Да, как следует из вышесказанного, клиент-серверными подходами тут и не пахнет. База - dbf, файл - один. Идентификаторы каждый раз загонялись в промежуточный dbf, а потом запрос на соединение таблиц. Этот промежуточный dbf и хотелось бы чистить. DELETE FROM - естественно работает, а PACK TABLE пока не пробовал. Попробовал передать строкой в запросе "Id In (...)", но 10000 обрабатываются 8 минут - медленно.
← →
Lexiy (2006-08-17 14:19) [10]danja12 как сказал это не значит что не правильно ... дроп криат ... чем тебе не подходит ?
← →
MsGuns © (2006-08-17 14:37) [11]>Lexiy (16.08.06 17:34) [1]
>на сколько я знаю работа с дбф вообще очень долгая штука :)
За знания - двойка с минусом
>danja12
>Удалять каждую запись в цикле очень долго, да и записи только помечаются на удаление, а надо получить пустую таблицу.
А никто так и не делает. Для этого существуют запросы.
Если не полениться и почитать борландовску справку, то там ясно написано, что эта функция предназначена только для локальных таблиц, которые представляют из себя совокупность отдельных файлов ОС, хранящихся автономно от других. Поэтому реализация сводится к тому, что старый файл (точнее, файл данных и файл индексов) просто уничтожается физически, а вместо него создается новый точно такой же, но без данных. Ессно, его размер будет "нулевой".
В серверных БД (к коим относится акцес, например) все базовая "требуха", включая описания таблиц (метаданные) и хранимую информацию (собственно данные) хранится в едином физическом файле. Поэтому было бы весьма проблематично "эмптить" всю базу с последующим ее пересозданием и перезагрузкой только потому, что кому-то вздумалось почистить физичекси одну таблицу
← →
term1t © (2006-08-17 15:10) [12]>Удалять каждую запись в цикле очень долго, да и записи только помечаются на удаление, а надо получить пустую таблицу.
...................
database.Open;
Query1.SQL.Clear;
Query1.SQL.Text:="delete from TableName";
Query1.ExecSQL;
database.close;
Query1.SQL.Clear;
Query1.SQL.TExt:="pack TableName";
Query1.ExecSQL;
...................
И все
← →
danja12 (2006-08-17 15:53) [13]> term1t:
Query1.SQL.TExt:="pack TableName";
Query1.ExecSQL;
...................
И все
Блин! Ну, не поддерживает локальный SQL команду "pack", только delete, insert, procedure, select и update.
> Lexiy:
дроп криат ... чем тебе не подходит ?
Drop ? Это не BDE, да? Приведи, плиз, пример синтаксиса. Мне и нужно то, одно поле всего в таблице.
← →
term1t © (2006-08-17 16:02) [14]>Блин! Ну, не поддерживает локальный SQL команду "pack", только delete, insert, procedure, select и update.
а ты внимательно посмотри то, что я писал... перед паком надо закрыть датабейс. так пробовал? мне помогло.
← →
danja12 (2006-08-17 16:12) [15]> term1t:
а ты внимательно посмотри то, что я писал... перед паком надо закрыть датабейс. так пробовал? мне помогло.
А я не вижу на закладке ADO аналога DataBase, может не туда смотрю? :)
Кстати !!!, а может кто-то знает такую вещь: где-то здесь я слышал, что BDE можно не устанавливать, а писать в каталог запуска какие-то dll-ки из его состава. Проблема то не в том чтобы не использовать BDE, а в том, чтобы не ставить. Ибо разработчиков до праха развелось, и каждый ставит на комп свою. В результате работает только последняя. Других то претензий к BDE у меня с моей мелкой задачкой нет. Никто не слышал, а?
← →
sniknik © (2006-08-17 16:17) [16]> Да, как следует из вышесказанного, клиент-серверными подходами тут и не пахнет.
не пахнет, правда. воняет!!! ;)
ADO разрабатывался для такого подхода... и работать локально (открывать таблицы как файл... т.д.) он попросту не может. (потому то TADOTable это фикция, обманка для ленивых... типа тоже самое что в BDE...)
работает всегда по принципу клиент сервера, для локальных баз таким является COM обьект, ядро как будто sql сервер... а открытие в TTable (BDE) заменяется тупым запросом с выбором всего в TADOTable (ADO), перекачивание данных все одно идет несмотря на то что таблица локальная... (единственным исключением является jet, у него есть настройки/методы для локальной работы, но даже в этом случае ты не открываеш таблиц сам/или через dll, а просиш COM обьект чтобы он открыл ее так (т.е. некоторое "дистанцирование" от данных есть всегда)) ну, а по умолчанию и он работает как все, т.е. "клиентсерверно".
← →
term1t © (2006-08-17 16:21) [17]>А я не вижу на закладке ADO аналога DataBase, может не туда смотрю? :)
я работал с БДЕ. попробуй ADOConnection1.connected:=false ....
← →
term1t © (2006-08-17 16:23) [18]скорее всего я глупость написал.. :) но с бде работает 100%
← →
sniknik © (2006-08-17 16:23) [19]> А я не вижу на закладке ADO аналога DataBase, может не туда смотрю? :)
ага, ты до сих пор ищеш функционал в компонентах, а не в используемом движке... а они разные и функционал разный. не влезет все в предопределенные методы компонент.
агналога базы(DataBase) нет, есть коннектор (ADOConnection)..., помедитируй над разницей в смыслах слов хотябы...
← →
sniknik © (2006-08-17 16:29) [20]> а писать в каталог запуска какие-то dll-ки из его состава.
а вот это лучше не делать (если конечно не цель создать проблемы программам которые используют нормально установленный BDE)
> с моей мелкой задачкой нет.
с мелкой задачкой найди себе мелкий альтернативный движок который вкомпилится в твою прогу... таких дофига. а лезть в то что даже не собираешся понимать, это и себе и другим с твоей прогой проблемы...
← →
danja12 (2006-08-17 16:38) [21]> sniknik: клиент-серверными подходами тут и не пахнет. не пахнет, правда. воняет!!! ;)
Я имел в виду мою задачу: открыть один файл dbf запросом по одному полю, показать, закрыть. Как я уже писал, я не знаток баз, я зарабатываю не этим, но не нанимать же из-за такой малости кого-то еще. Я не буду сприть о клиент-серверных технологиях, не считаю для себя возможным. И если захочу почитать такие вот поучения, то обязательно куплю книжку или задам здесь вопрос по другому: обясните, дескать, профану про клиент-серверы.
В топике описана задача, можешь помочь ее решить - приведи работающий пример или дай совет, типа не связывайся с ADO, воспользуйся тем то и тем то. Или Jet надо настроить так то и так то. Не можешь помочь - жаль. А говорить: "читайте детки умные книжки" можно в ответ на любой вопрос. Не поджимало бы время, сидел и читал бы.
← →
Anatoly Podgoretsky © (2006-08-17 16:55) [22]Какой настойчивый
← →
sniknik © (2006-08-17 17:18) [23]> В топике описана задача,
да ну? там по моему жалоба на то что TADOTable не один в один копирует TTable... а после были отвергнуты реальные варианты... вопрос почему отвергнуты? логично, от непонимания основ... отсюда и все "такие вот поучения"...
если бы там было бы реально описание задачи и вопрос как это лучше/или вообще возможно сделать... то скорее всего обсуждение пошло бы по другому пути.
> типа не связывайся с ADO, воспользуйся тем то и тем то.
этот совет уже был -> [20]...
> Или Jet надо настроить так то и так то.
где видно что используется Jet ??? и потом для [0] его как ни настраивай, ничего не выйдет... предложенный вариант с VFP (вижуал фокс про) тебя так же не устроил (вернее скорее всего был просто непонят и потому проигнорирован...)
> Не можешь помочь - жаль.
чтобы помоч, нужно говорить на одном языке... или делать за другого все дя еще и претезии будут что после копи-пасте код сразу не заработал/заработал неправильно... т.д. верно, это не для меня
> А говорить: "читайте детки умные книжки" можно в ответ на любой вопрос.
еще я иногда для разнообразия говорю "вам нужно нанять программиста"... задача детская... (значит детского программиста ;о)))
← →
danja12 (2006-08-17 17:18) [24]Сори, у меня часть ветки выпала, и я дальше 17-го поста не видел. Теперь вижу. Много дельных замечаний. Прошу отнестись к моему предыдущему сообщению с пониманием. К концу пятницы (завтра) надо выдать результат на горА.
> sniknik: с мелкой задачкой найди себе мелкий альтернативный движок который вкомпилится в твою прогу...
Согласен. Какой например? Время поджимает.
> а вот это лучше не делать
Понял, не буду.
> Anatoly Podgoretsky: Какой настойчивый
Ага. Я не сижу здесь все время, но если появилась потребность... Мэтрам мое почтение, но никто же не заставляет отвечать. Спасибо хоть не банят за глупости :)
Равнение на MBo. :)
← →
sniknik © (2006-08-17 17:44) [25]> Какой например?
http://www.google.ru/search?hl=ru&q=%D0%B0%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%B0+BDE+DBF&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
выбирай!
както искал подходящий, нашол больше полусотни, скачал 28 вариантов, и остановился не потому что они кончились, а потому что надоело, да и нашол более менее подходящий.
но мои требования к движку наверняка отличаются от твоих... мне нужно было поддержка клипера/его индексов, + только с исходными кодами пусть даже он будет медленнее аналогов без них... подошол halcyon, никаких нареканий от меня лично, к нему нет (хотя видел ругали...) единственная проблема в процессе эксплуатации была в том, что при переходе с одного варианта клипера на другой почемуто изменилось построение индекса в новом, пришлось править и код компанента в связках (на что в общемто и закладывались при поиске кандидата).
← →
danja12 (2006-08-17 17:49) [26]>sniknik: а после были отвергнуты реальные варианты... вопрос почему отвергнуты? логично, от непонимания основ...
Точно, но за 2 дня основы не постигнуть, была надежда на существование достаточно простого варианта, которого я не вижу или о нем не знаю.
Пока вывод: с помощью ADO c провадером Jet сжать dbf нельзя (такова была задача). О Jet не упомянул раньше - извиняюсь.
Drop - да, или пустой файл копировать, но почему-то думалось, что есть соответствующие методы компонентов. Ошибся.
> чтобы помоч, нужно говорить на одном языке... или делать за другого все дя еще и претезии будут что после копи-пасте код сразу не заработал/заработал неправильно... т.д. верно, это не для меня
Не нужно готовый код нахаляву, просьба была о работающем примере, разные, на мой взгляд вещи. Но вот теперь то я глянул на базы и мне открылась бездна :) Надо более полно описывать саму задачу и окружение. Я понял, я согласен.
>еще я иногда для разнообразия говорю "вам нужно нанять программиста"... задача детская... (значит детского программиста ;о)))
Я и есть программист :)))) Ну, не в области баз. (Хватает и других областей) И стаж у меня поменьше (чуть-чуть), если, конечно, Вы не с пеленок за клавой. Ну, влез на чужую территорию. С чего то же нажо начинать. Да, помню-помню: с умных книжек, я их тоже писал в свое время. Все понял, учту все замечания.
← →
sniknik © (2006-08-17 18:04) [27]> с помощью ADO c провадером Jet сжать dbf нельзя (такова была задача).
> Drop - да, или пустой файл копировать
еще можно типа
SELECT * INTO Table2 FROM Table1 WHERE 1=2
скопирует только структуру без данных/индексов, с последующим уделением оригинала/переименованием копии (только это уже не sql-ем, в нем нет переименования таблиц. ну, в jet по крайней мере (обьекты jet-а не всчет ;), sql)).
← →
Anatoly Podgoretsky © (2006-08-17 18:49) [28]sniknik © (17.08.06 18:04) [27]
Не знаю скопирует или испортит, для MS SQL испортит.
Раз используется JET то реально рабочее это CREATE TABLE + CREATE INDEX
Пока я так и не понял, что у него за таблицы.
Если ФоксПро то надо сменить провайдера на OLE DB for VFP и обнулять, сжимать его средствами.
← →
danja12 (2006-08-18 09:15) [29]> Anatoly Podgoretsky:
Пока я так и не понял, что у него за таблицы.
Если ФоксПро то надо сменить провайдера на OLE DB for VFP и обнулять, сжимать его средствами.
Приносят мне файл z.dbf Какая это база? Открываю просмотрщиком, тот выдает: TypeFile: FoxBase+/dBase III PLUSE, no memo
Попробую сменить провайдера. Вобще, идея от sniknik использовать альтернативный движок, наверно в моем случае, самая продуктивная. Но, очевидно, что это займет время, ибо с базами имею дело второй раз всего.
Вопрос вдогонку. Вполне допускаю, что ошибся в самом начале, при постановке своей задачи (не той что в теме). Есть у меня идентификаторы объектов в количестве от 10 до 50 тысяч. В потенциале до 100 000. В строке ли, в потоке, в списке, наверно, роли не играет, куда надо - перегоню. Теперь надо выдать на просмотр соответствующие строки из этой таблицы z.dbf. Я вижу пока два пути: или в запросе проверять вхождение в список, или писать все идентификаторы в другой dbf и давать запрос на внешнее соединение таблиц. При использовании BDE второй вариант отрабатывал быстрее. Он и использовался. BDE пользоваться запретили. Может я, опять же, не вижу какого то еще варианта. Если есть мысли, подтолкните в нужном направлении. Я уже смирился, что к вечеру не успею. Буду копать глубже и ширее :)
← →
Anatoly Podgoretsky © (2006-08-18 23:18) [30]Приносят мне файл z.dbf Какая это база?
Никакая .dbf это расширение для подмножество файлов, большинство из которых не имеют отношения к базам.
Открываю просмотрщиком, тот выдает: TypeFile: FoxBase+/dBase III PLUSE, no memo
Это конечно уже база из подмножества xBase, но какая неизвестно, но кажется совместимая по формату с dBase III, но это ничего не значит, зависит от кривизны просмотрщика. Вероятно с ней справится БДЕ
← →
danja12 (2006-08-21 09:09) [31]> Anatoly Podgoretsky:
...кажется совместимая по формату с dBase III, но это ничего не значит, зависит от кривизны просмотрщика. Вероятно с ней справится БДЕ
BDE уже с ней справлялся, но BDE пользоваться нельзя :(
И ADO/Jet с ней справляется, а вот VFP у меня нет. В общем то, результат, так или иначе, получен, можно закрывать обсуждение, если только по дополнительному вопросу в [29] есть какие-либо мысли. Спасибо всем, Д.
← →
DonVik (2006-08-22 09:13) [32]Ребята! Много лет работаю с DBF (FoxPlus, Foxpro2,VFP) и при переходе на Делфи убеждаюсь в следующем.
1. Лучше чем ФОКС с DBF-файлами не работают никакие движки. Поэтому если это возможно, обрабатывайте DBF-файлы с его помощью.
2. Если требуется решить простую задачу из топика - стереть записи - можно пойти по такому пути. Файл DBF имеет заголовок (header), который описывает сам файл. Он заканчивается байтом 0D. Все, что после него - физические записи. Достаточно все что после этого байта удалить - и задача решена. Правда нужно еще в байтах 4-7 прописать нуль (количество записей)
← →
Anatoly Podgoretsky © (2006-08-22 09:21) [33]DonVik (22.08.06 09:13) [32]
1. Использовать ФоксПро можно, но лишнее, движок от ФоксПро нормально работает и в Дельфи и Бейсике, при том теми же самыми командами ФоксПро. Возможно, что и сам ФоксПро работает через тот же движок.
2. Это хакерский метод, и это при наличии прямых, достаточно установить правильного провайдера. За подобные дела принято увольнять, из-за недостаточных профессиональных знаний, вроде называется по причине несответствия профессиональных знаний.
← →
Elen © (2006-08-22 09:32) [34]
> atoly Podgoretsky
Я тоже частенько сталкиваюсь с подобными проблемами работы из Делфи с DBF FoxPro. Делаю так : На FoxPro создаю СОМ объект, где есть процедура выполнения консольных команд (практически всех комманд Visual FoxPro). Далее вставляю этот компонент на форму в Делфи и получаю полный доступ к возможностям VFP. Оказалось очень удобно, чем через ADO
← →
Anatoly Podgoretsky © (2006-08-22 09:37) [35]Можно и так, но есть прямой провайдер, так что нужды обращаться через COM/OLE напрямую нет. А чем неудобно через АДО, еще проще, просто в CommandText пишешь теже самые команды, кода меньше.
sniknik может подробнее указать, он не раз приводил это в форуме, я просто запомнил его слова. Провайдер же доступен для бесплатного скачивания на сайте Микрософт. Не нравится OLE DB провайдер, так они поставляют и ODBC драйвер.
← →
Elen © (2006-08-22 10:10) [36]
> Anatoly Podgoretsky
Через ADO не все команды VFP можно выполнить, это мы уже пробовали.
И, например, если нужно чтоб команда вернула результат то как это на ADO сделать? (скажем команда "List" - Вывод или функция AT()). Да и медленный какой-то ADO...
← →
Anatoly Podgoretsky © (2006-08-22 11:39) [37]Я не знаю, как, поскольку не использует, но заявленую задачу можно и при том двумя путями.
← →
DonVik (2006-08-22 13:31) [38]Собственно, г.Anatoly Podgoretsky, давно хотел выяснить такой вопрос. Довольно часто задают вопрос как работать с dbf-файлами в Делфи. И по смыслу вопроса кажется, что нужно сделать что-то достаточно простое (открыть файл, показать, закрыть, удалить записи). Мне непонятно почему такие вещи делаются в Делфях. Ну красивый интерфейс, ну привычный язык - а по серьезному?. Особенно если учесть, что в VFP более 800 команд и функций, да и еще любые свои можно создавать. Кроме того, в VFP интерфес можно создать не намного менее привлекательный. Смотрите этот топик - согласитесь, решения не очень-то красивые. А вот в фоксе это делается так (без ЕДИНОГО DataSet и компонент):
Use <File>
"что-то делаем"
Delete all
Pack
Use
Или еще пример: нужно в какое-то поле записать модуль номера записи по основанию, например, 3, если поле Field2#0 (не нуль)
Use <File>
Go top
Replace all Field with MOD(RECN(),3) for Field2#0
Use
Я уже не говорю о таком "оружии" как компактные индексы с выражениями, чего нет ни в одной известной мне БД.
Может быть, это происходит от незнания языка и возможностей VFP? Но это-же, скажем так, не очень серьезно. Единственный более-менее серьезный аргумент - необходим VFP на машине. Но его минимальный объем ~17 МБ. Даже Exe-шники можно делать, зарегистрировав 3 DLL (~7 МБ)
Понимаю, вопрос не в тему, а все-же, может быть выскажетсь, просветите...
← →
Anatoly Podgoretsky © (2006-08-22 14:54) [39]Задают бессмысленный вопрос, dbf-файлы это общеее название группы файлов, которое часто никакого отношения к базам не имют.
Ну а ФоксПрошники часто делают набеги на сайты со своими бредовыми идеями, люди уже выбрали инструмент и этот ФоксПро и нафиг им не нужен. Кто программирует на Фоксе те не тусуются в форумах по Дельфи.
Дельфи тоже не требует использовать DataSet и компоненты.
Так что брысь отсюда.
← →
DonVik (2006-08-22 15:21) [40]Anatoly Podgoretsky !
Парень, не будь таким снобом! Я программирую как на ФОКСЕ так и на Делфях. А инструмент выбираю в зависимости от задачи. Иной раз на Фоксе можно решить задачу за 10 мин, когда на Делфях потребуется пара часов. Не хочешь отвечать - не отвечай, только не хами. Похоже ты и сам не знаешь толком, что такое dbf-файлы и базы данных VisualFoxPro, иначен не написал бы "Задают бессмысленный вопрос, dbf-файлы это общеее название группы файлов, которое часто никакого отношения к базам не имют.
"
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.044 c