msadox28.tlb не является допустимым .Файл чистой сборки при его регистрации

#database #vb.net #ms-access #programmatically #adox

Вопрос:

Я разрабатываю приложение с vb.net (2015) и база данных MS Access. Я могу нормально работать с существующей базой данных. У меня сейчас ситуация, когда мне нужно программно создать базу данных для выставления счетов. Это ситуация, когда каждая папка будет содержать базу данных для выбора компании/фирмы.

После поиска в Интернете / StackOverflow я узнал об ADOX. Даже получил готовый код для этого. Я применил это в своем кодировании.

  1. Добавление ссылки на Microsoft ADO extend 2.8 и 6.0
  2. Создал переменную Adx как новый Adox.каталог
  3. Затем, наконец, написал 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:

  1. Меню проекта > Добавить ссылку >> Раздел COM >>> Выберите Microsoft ADO Ext. 6.0 для библиотеки DLL и безопасности
  2. Напишите строку подключения в точке входа в программу (форма загрузки/вспомогательная) -> > Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:VBProjTestingtest.accdb , назначьте ее переменной connString
  3. Объявите каталог adox глобально, как Public gAdxCat As New ADOX.Catalog
  4. Используйте его метод gAdxCat.create(connString)
  5. Вот и все — СДЕЛАНО

Еще раз спасибо @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