#database #vb.net #ms-access #programmatically #adox
Вопрос:
Я разрабатываю приложение с vb.net (2015) и база данных MS Access. Я могу нормально работать с существующей базой данных. У меня сейчас ситуация, когда мне нужно программно создать базу данных для выставления счетов. Это ситуация, когда каждая папка будет содержать базу данных для выбора компании/фирмы.
После поиска в Интернете / StackOverflow я узнал об ADOX. Даже получил готовый код для этого. Я применил это в своем кодировании.
- Добавление ссылки на Microsoft ADO extend 2.8 и 6.0
- Создал переменную Adx как новый Adox.каталог
- Затем, наконец, написал Adx.create(строка соединения поставщика olejet с источником данных)
На этом шаге я получаю сообщение об ошибке
Класс COM не зарегистрирован
Поэтому я попытался зарегистрироваться msadox.dll
и msadox28.tlb
с regsvr32
и regasm
, но в это время я получаю еще одну ошибку:
msadox.dll успешно зарегистрировался, но ошибка выдает в msadox28.tlb
Не удается загрузить файл-потому что это недопустимый файл сборки .net
Теперь я застрял на этом месте.
Моя система-64-разрядная версия Windows 10. Я попытался нацелиться на процессор x86 и любой процессор, но это не сработало. Я получил здесь много вопросов и ответов, но не понял этого.
Редактировать:
Я попытался следовать строке подключения, и это сработало, но она создает старый mdb-файл 2000-2003 годов. я хочу использовать новый файл доступа .accdb
Строка-это :
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:VBProjTestingtest.mdb;Jet OLEDB:Engine Type=5
ИЗМЕНИТЬ : 20/9/2021 — ПН
Прежде всего, большое вам спасибо @Jimi, ваше предложение использовать ACE.16 и чистящий раствор сработали. Большое спасибо
Я использую следующие шаги для создания базы данных MS Access с помощью ADOX в VB.NET:
- Меню проекта > Добавить ссылку >> Раздел COM >>> Выберите Microsoft ADO Ext. 6.0 для библиотеки DLL и безопасности
- Напишите строку подключения в точке входа в программу (форма загрузки/вспомогательная) -> >
Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:VBProjTestingtest.accdb
, назначьте ее переменнойconnString
- Объявите каталог adox глобально, как
Public gAdxCat As New ADOX.Catalog
- Используйте его метод
gAdxCat.create(connString)
- Вот и все — СДЕЛАНО
Еще раз спасибо @jimi
Комментарии:
1. Вы добавили ссылку в свой проект на
Microsoft ADO Ext. 6.0 for DDL and Security
? Это создает сборку взаимодействия в[Project]ObjDebug
. —Embed Interop Types
обычно устанавливаетсяtrue
по умолчанию.2. Да ссылка добавлена
3. Да @jmcilhinney, я тоже удивлен, когда опубликовал этот вопрос. я просто хотел выделить жирным шрифтом одну строку сообщения, но все сообщение стало жирным. но теперь я вижу это обычным/обычным шрифтом в своей системе.
4. Удалите ссылку на версию
2.8
. Кстати, вам не нужен старый реактивный двигатель, вы также можете использовать новых поставщиков, например,ACE.12
иACE.16
, для создания базы данных с помощью ADOX. Используя Jet, ваше приложение должно быть ориентировано на x86.5. Спасибо @Jimi — Ваше предложение использовать ACE.16 сработало, большое спасибо за вашу ценную помощь.
Ответ №1:
Это ответ на мой вопрос (помог @jimi)
ниже приведены шаги по созданию базы данных msaccess с помощью ADOX в VB.NET и возникает ошибка, упомянутая в оригинальных вопросах.
1-Меню проекта > Добавить ссылку >> Раздел COM >>> Выберите Microsoft ADO Ext. 6.0 для библиотеки DLL и безопасности (удалить ссылку 2.8)
2-напишите строку подключения в точке входа в программу (загрузка формы/вспомогательная основная) -> «Поставщик=Microsoft.ACE.OLEDB.16.0;Источник данных=D:VBProjТестированиеtest.accdb» назначьте ее переменной connString
3-объявите каталог adox глобально, как Public gAdxCat, Как Новый ADOX.Каталог
4-Пользователь использует свой метод gAdxCat.create(соединительная строка)
5-Вот и все, ГОТОВО
еще раз спасибо @jimi