Я делаю это все время. При использовании ADO Вы действительно не используете Доступ, но Струю, базовую базу данных. Это означает, что кто-либо с Excel может использовать приложение - Доступ, не требуемый. О, я должен упомянуть, место, я работаю, купило набор лицензий Малого бизнеса Office - никакой Доступ. До работы здесь, я предположил бы, что у любого, у кого был Excel, также будет Доступ. Не так.
я создаю один класс для каждой таблицы в Доступе. Я очень редко выполняю запросы через ADO, вместо этого я сохраняю ту логику в модулях класса. Я читал в с оператором SELECT и выписываю с и ОБНОВЛЯЮ или ВСТАВЛЯЮ использование Выполнить метода объекта ADODB.Connection.
Видят http://www.dailydoseofexcel.com/archives/2008/12/21/vba-framework-ii/
, если Вы хотите видеть, как я установил свой кодекс.
Для ответа на вопросы: Это будет небольшая кривая обучения для Вас, если Вы уже будете знать Excel VBA, но будет некоторое обучение сделать; Вы заплатите потерю производительности по выполнению всего этого в Доступе, но дело не в этом плохой и только можно решить, стоит ли это того; и у Вас может быть несколько человек, получающих доступ к базе данных.
Эти файлы должны находиться в том же каталоге, что и указанный файл, NHibernate.dll:
Antlr3.Runtime.dll
Iesi .Collections.dll
log4net.dll
Castle.Core.dll
Castle.DynamicProxy2.dll
Также вы должны добавить ссылку или скопировать ее:
Похоже, dll NHibernate не копируется в каталог bin вашего приложения. Убедитесь, что на него есть ссылка и он существует в каталоге bin.
NHibernate имеет несколько других сборок, кроме nhibernate.dll
. Были ли у вас все они (из одного выпуска)?
Вы должны сослаться на зависимые сборки (я предполагаю, что это «NHibernate.ByteCode.Castle») и установить для их атрибута «copy local» значение true.
Вероятно, у вас есть код, ссылающийся на две разные версии библиотеки NHibernate. Версия NHibernate.dll, которую вы загружаете с NHibernate, скорее всего, отличается от той, которую вы загружаете, скажем, с Castle ActiveRecord. Попробуйте использовать только ту версию библиотеки DLL NHibernate, которая поставляется с NHibernate.ByteCode.Castle. И убедитесь, что у вас нет библиотеки DLL NHibernate (любой версии) в вашем GAC (по крайней мере, пока вы не решите эту проблему).
Полагаю, вы недавно обновили NHibernate до 2.1?
Если так, то я предполагаю, что у вас есть разные проекты, ссылающиеся на разные версии NHibernate.
Это случилось со мной, и это сложнее чтобы отследить, чем вы думаете.
Вот шаги, которые я предпринял для решения этой проблемы:
Это, надеюсь, устранит эту проблему для вы.
Недавно я обновил наш проект до версии 1.0 RTM FluentNHibernate, для которой требовались последние биты NHibernate. Это привело к той же проблеме, что и у вас.
Структура нашего проекта была примерно такой:
Repository root
Solution
Web
References
DataAccess
... other projects/layers ...
DataAccess
References
..\ReferenceAssemblies\NHibernate.dll
..\ReferenceAssemblies\FluentNHibernate.dll
ReferenceAssemblies
(Все внешние библиотеки DLL находятся в каталоге ReferenceAssemblies.)
Моя первая попытка решить проблему была добавление ссылки на NHibernate.ByteCode.Castle.dll в проект DataAccess. Это сработало ... но только в разработке ...
Когда я опубликовал веб-приложение на нашем сервере приемочного тестирования клиентов (что происходит автоматически с помощью TeamCity и скрипта, содержащего вызов aspnet_compiler) .exe), NHibernate.ByteCode.Castle.dll нигде не было найдено.
Я не уверен , почему это происходит, но я подозреваю, что это как-то связано с тем фактом, что никакой код в нашем приложении на самом деле не вызывает код в этой конкретной dll. Кроме того, (поправьте меня, если я ошибаюсь) нет жестко запрограммированной ссылки из NHibernate.dll на NHibernate.ByteCode.Castle, поэтому где-то ниже (предположительно неиспользуемая) dll упускается из виду.
Второй (и успешно) попытка заключалась в том, чтобы добавить ссылку на отсутствующую dll прямо в веб-проект. Теперь я могу без проблем удалить ссылку, которую добавил с первой попытки.
(Мне не очень нравится иметь такую ссылку в этом конкретном проекте, но эй!): -)
В моем случае «Чистое решение», за которым следовало «Восстановить решение», решило проблему.
У меня тоже была эта проблема.
Для меня проблема заключалась в том, что FluentNHibernate ожидал другую версию NHibernate (2.1.0.4000), чем я включал в проект (2.1.2.4000). Я наткнулся на это, скачивая по отдельности последние выпуски каждой библиотеки.
Чтобы решить эту проблему, я изменил ссылку на NHibernate, указав на старую версию NHibernate, поставляемую с FluenNHibernate 1.0 RTM (2.1.0.4000).
Другим решением может быть явная установка привязок сборки из файла app.config.