Доброе время суток
Цитата |
---|
JeyCi написал: т.е. для серверных БД клиент есть ... но всё равно, думается, что разрабатывать его под каждого конкретного заказчика и его модель данных всё-таки надо - (наверно, как-то через Visual Studio) ... как и "Access служит для разработки клиентского приложения"... т. е. я не программист: мне просто кажется, что слово "клиент" и "клиентское приложение" - это одно и то же ... и их надо разрабатывать под каждую конкретную задачу... |
Ещё раз извиняюсь за сумбурность изложения.
Вы не совсем правы. Клиент серверной БД и связанный с ним драйвер - это часть программного обеспечения (ПО) БД, поставляемого разработчиком БД. Клиент необходим для взаимодействия с серверным ПО базы данных. Его достаточно скачать и установить (просто наберите скачать клиент Oracle или MS SQL server). Хотя тут есть тоже свои особенности, например, для MySQL лучше искать драйвер MySQL. Поэтому вам не надо под каждого заказчика разрабатывать свой клиент.
Клиентское приложение - это уже тот код, который создаёт и управляет объектами базы данных DDL (таблицы, представления,индексы, последовательности, ограничения и т. д.), или взаимодействует с созданными объектами DML (вставка, замена, удаление данных в таблицах и собственно запросы SQL).
Ещё раз. Есть ПО базы данных, выполняющее работу с базой данных и предоставляющее услуги по работе с ней. И есть клиентский код, работающий с базой данных и реализующий бизнес-логику тех задач, для которых и создаётся база данных (включая и создание объектов БД).
Применительно к данной теме (всё же только про Access). Для работы с БД достаточно Access Runtime Engine. Вы можете в VBA, используя библиотеку Microsoft ADO Ext. for DDL and Secutiry, создать базу данных, создать таблицы, поля таблиц, наложить ограничения и т. д. Для существующей БД Access можно просто через ADODB.Connection или ADODB.Command, с заданным Connection, выполнять DDL. Можно это же сделать и из под VBScript или JSScript. Используя Recordset вставлять, обновлять или удалять записи в таблицах, а также выполнять SQL запросы. А можно это же выполнить через те же Connection и Command. Весь этот код и будет вашим клиентским приложением.
То есть всё то, что вы делаете, используя приложение Access, поэтому Access всего лишь клиентское приложение, для функционирования БД не нужный, но очень удобный инструмент
Цитата |
---|
поэтому, видимо, мне и кажется всё время, что запросы в Access работают быстрее, чем, созданные (такие же) с помощью MS Query в xl?? ... всё не могу понять: |
Скорее всего кажется. Тут просто есть некоторая разница в восприятии. В Access вы имеете дело с уже инициализированным "движком" и открытым подключением к БД, плюс формат вывода запроса проще, чем лист Excel, поэтому выборка происходит быстрее. Из под Excel же необходимо выполнить открытие подключения к БД, передать требуемые данные и вставить на лист Excel (если запрос выполняется первый раз после запуска Excel, то ещё и инициализация "движка" - всё это требует времени. С этой точки зрения, да медленнее, если же с точки зрения выполнения самого запроса - то разницы скорее всего нет.
С Odc и dbq - это всего лишь текстовые файлы с соответствующей структурой - данными по строке подключения и текстом запроса. С их помощью легко повторно вставить данные из БД на лист новой книги, не проходя все шаги, например MS Query по получению данных, но и не более того. Можно сбросить его другому человеку, в случае использования серверной БД, чтобы он получил те же данные у себя, минимизируя в какой то степени объём передаваемых данных.
С облачными хранилищами, тут не всё так просто - это же всего лишь удобное средство синхронизации. Представьте себе, что offline в папке клиента одного и того же облака на разных компьютерах два человека работают с одним и тем же файлом. Потом подключаются к интернет - и что с чем будет синхронизировано? Я облачными хранилищами не пользуюсь, возможно что-то для такой коллизии и есть решения. Буду рад, если мои сомнения по этому поводу напрасны.
Всё же, мне кажется, если стоит задача доступа к общим данным в структуре БД, то лучше либо задействовать облачные базы данных (Google, Microsoft, Oracle может кто ещё), с оплатой по подписке. Либо, организовав серверную БД у себя, для сотрудников организовать доступ к ней через интернет, используя WPN.
Ответ на вопрос в) вы дали и сами. Подключение в рамках его определения в Excel это и само подключение и запрос одновременно, в отличии организации этого в ADODB, поэтому использовать один и тот же WorkbookConnection для выполнения разных запросов не получится.
Цитата |
---|
просто файл xl уже много весит и работает чуть-чуть задумчиво - мне в принципе пока не очень мешает это - но мечты об оптимизации не покидают... хотя понятно, конечно, что и сами запросы можно пооптимизировать, я ведь ещё только первые шаги сделала на 7000кб... вот и задумалась: можно ли причесать Excel? или иммигрировать в Access? |
Вы же читали книги по Aceess, во всех в них даются рекомендации - данные отдельно, управление отдельно. Применительно к файлу Excel, храните данные используемые для выборок в одном файле, а результаты этих выборок в других файлах.
И несколько общая рекомендация, если для реализации ваших задач удобен SQL и нужен доступ с разных компьютеров - то не перейти ли вам на серверную БД? Помимо единого хранилища, вы решите и такую проблему файловых БД, как зависимость всех ваших строк подключения для файловых БД от местоположения файла. В серверных это же (упрощённо) имя компьютера и имя сервиса, как вы понимаете в пределах доступности по сети - всегда одно и тоже.