Вопрос

Я написал небольшую (на 8-10 ноутбуков) систему торговых точек, работающую по беспроводной сети в виде HTA, которая считывает данные из / записывает в MDB Access, расположенный на общей сетевой папке.
Мне нужно использовать ADO - getString, а список пользователей недоступен в DAO.
Мне также нужно использовать DAO - MDB не может быть сжат с помощью ADO.

Я знаю, что:
1) Если серверная часть базы данных не является MDB Access, я должен использовать ADO.
2) Если серверной частью является MDB, но я хочу в какой-то момент перейти на SQL Server, я должен использовать ADO.
3) В приложении Access или любом другом приложении VBA / VB я должен использовать DAO, поскольку ADO должен проходить через уровень трансляции поставщика Jet OLE DB, в то время как DAO является более прямым.
4) VBScript / JScript позволяет мне использовать либо DAO, либо ADO.

Вопрос, состоящий из двух частей, заключается в следующем:
1) В этой программной среде (HTA / scripting) лучше ли использовать ADO, а не DAO?
2) Предлагает ли ADO какие-либо преимущества, поскольку HTA выполняет чтение / запись по беспроводной сети?

Это было полезно?

Решение

  1. Если единственная причина, по которой вам нужен DAO, - это сжатие базы данных, вы можете использовать DAO для этого и использовать ADO для всего остального.Вы не ограничены использованием только ADO или DAO.

  2. Самое большое преимущество использования ADO заключается в том, что когда придет время, будет проще перейти на SQL Server Express.Вам следует сделать это скорее раньше, чем позже, поскольку SQL Server Express предлагает все преимущества баз данных MSAccess без недостатков.SQL Server Express является бесплатным, и он легко справится с предлагаемым вами размером системы.

Базы данных Access легко повреждаются в многопользовательской среде, особенно когда задействована беспроводная сеть.Если вы опасаетесь потерять преимущества работы в MSAccess, вы все равно можете подключиться к SQL Server с помощью связанных таблиц и таким образом работать с вашей базой данных SQL Server Express.

Другие советы

Вы также можете использовать JRO для сжатия вашего MDB-файла.Это будет включено в любую последнюю версию MDAC, установленную по умолчанию в XP и более поздних системах.Установка Access не требуется.

Чтобы ответить на ваши конкретные вопросы:

1) Я бы выбрал ADO только потому, что он более современный, и тот же API можно использовать в других типах сценариев, таких как доступ к LDAP / ActiveDirectory, чтение папок файловой системы, чтение почты MAPI и работа с другими типами полуструктурированных текстовых файлов, таких как текст фиксированной ширины и CSV.Это не особенно подходит для среды программирования HTA, но, возможно, вам лучше изучить более широко применимый API.Я также думаю, что это более простой API для работы, но я начал с него и только позже работал над некоторыми старыми проектами DAO.

2) Одно из возможных преимуществ, которое предоставляет ADO, заключается в отключенных наборах записей, которые могут иметь преимущество или, по крайней мере, предлагать некоторые архитектурные альтернативы в настройке вашей беспроводной сети.Вы открываете набор записей, затем отключаете его, чтобы по-прежнему работать с данными в памяти, но не оставлять открытым подключение к базе данных.Затем, позже, вы сможете повторно подключиться и обновить базу данных.Кроме того, вы можете работать в полностью отключенном стиле, управляя таблицами как локальными файлами XML или ADTG.

Вы могли бы подключить DAO к работе с VBScript, но это странное сочетание.В целом ADO имеет наибольший смысл.


Еще одним преимуществом ADO было бы то, что он поддерживает RDS через DCOM или HTTP.Это может быть использовано для преодоления многих ограничений Jet MDB, используемых через общий доступ к файлам, таких как повреждение, к которому могут привести ненадежные сети и клиенты.Это также сокращает объем трафика по сети, повышая производительность.Кроме того, он предлагает средний уровень, на котором могут "жить" бизнес-объекты, и все это может быть опосредовано с помощью COM +, где это применимо.

Конечно, у вас больше нет возможности использовать простую P2P-сеть и общий файловый ресурс для размещения базы данных.RDS нужен сервер для размещения процесса и запуска Jet engine, который больше не нужно запускать в каждой клиентской системе.Это означает, что вы можете использовать хранимые процедуры Jet, которые выполняются на сервере, разгружая больше клиентской обработки и сетевого трафика.Хотя эта эксклюзивная технология ADO / Jet 4.0 OLE DB Provider не такая сложная, как T-SQL или другие альтернативы, она предлагает ощутимые преимущества, которых нельзя получить с помощью DAO.

RDS может маскировать большую часть процесса использования несвязанных наборов записей, упрощая клиентский код.Он использует ADTG под капотом, который был разработан и оптимизирован именно для этой цели.

Однако использование RDS требует большей инфраструктуры и опыта, чем простой общий доступ к файлам.С таким же успехом вы могли бы изучить недорогую версию SQL Server.


В общем, я бы рекомендовал использовать jetcomp.exe утилита для уплотнения и ремонта либо через DAO, либо через JRO.Это дает ряд преимуществ.

Если вы можете позволить себе использовать HTA-приложение с Access вместо более производительной платформы, я бы сказал, что вам следует выбрать самый простой для вас API.Узким местом в вашем случае никогда не будет абстракция доступа к базе данных.Тем не менее, DAO действительно стар.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top