msadox28.tlb is not a valid .Net assembly file while registering it

195 Views Asked by At

I am developing application with vb.net (2015) and MS Access database. I can work fine with existing database. I have now situation where I need to create database programmatically, for billing purpose. It is the situation where each folder will contain database for company/firm selection.

After searching on the internet / StackOverflow I learned about ADOX. Even got the ready code for it. I applied it in my coding.

  1. Adding reference of Microsoft ADO extend 2.8 and 6.0
  2. Created variable Adx as new Adox.catalog
  3. Then finally wrote Adx.create(olejet provider conn string with data source)

In this step I get an error

COM Class not registered

So I tried to register msadox.dll and msadox28.tlb with regsvr32 and regasm but at that time I get another error:

msadox.dll get registered successfully but error gives in msadox28.tlb
Fail to load -file- becuase it is not a valid .net assembly file

Now I am stuck at this point.

My system is Windows 10 64 bit. I tried to target cpu x86, and any cpu but it didn't work. I got many questions and answer here but didn't understand it.

EDIT:

I tried following connection string and it worked, but it creates old 2000-2003 mdb file. i want to use new access file .accdb

String is :

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VBProj\Testing\test.mdb;Jet OLEDB:Engine Type=5

EDIT : on 20/9/2021 - MON

First of all Thank you very much @Jimi, your suggestion to use ACE.16 and cleaning solution worked. Thanks a lot

I use the following steps to create MS Access database using ADOX in VB.NET:

  1. Project Menu > Add Reference > COM Section > Select Microsoft ADO Ext. 6.0 for DLL and security

  2. Write connection string at program entry point (form load/sub main) -> Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:\VBProj\Testing\test.accdb, assign it to variable connString

  3. Declare adox catalog globally like Public gAdxCat As New ADOX.Catalog

  4. Use its method gAdxCat.create(connString)

  5. That's all - DONE

Again thanks to @jimi

1

There are 1 best solutions below

0
On

This is the answer to my question (helped by @jimi)

following are the steps to create msaccess database using ADOX in VB.NET and error occurs mention in original questions.

1-Project Menu > Add Reference > COM Section > Select Microsoft ADO Ext. 6.0 for DLL and security (remove ref of 2.8)

2-write connection string at program entry point (form load/sub main) -> "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=D:\VBProj\Testing\test.accdb" assign it to variable connString

3-declare adox catalog globally like Public gAdxCat As New ADOX.Catalog

4-User its method gAdxCat.create(connString)

5-Thats all DONE

again thanks to @jimi