-
July 5th, 2022, 08:04 PM
#1
Visual Studio Extracting Data from MSAccess Databases
I had a wonderful life. I was able to develop a class, CAccessDBManager, to manage
interactions between VC++ and MSAccess databases. Worked like a charm for years
with VS2010 which went away and Office 2007. Now I am trying to use VS2022 and MSAccess that purports to be “Access 2007 – 2016 file format”.
Here is the relevant portion of my class method, CAccessDBManager::OpenDatabase():
void CAccessDBManager::OpenDatabase(){
if ( ConnectionPtrIsOpen == FALSE ){
_bstr_t bstrEmpty(L"");
_variant_t vtEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR);
CoInitialize(NULL);
try{ // to create an ADO _ConnectionPtr
hr = ConnectionPtr.CreateInstance( __uuidof( Connection ) );
ConnectionPtr->ConnectionString = ConnectionString;
hr = ConnectionPtr->Open(bstrEmpty,bstrEmpty,bstrEmpty,-1); << ????
ConnectionPtrIsOpen = TRUE;
}
catch( _com_error &e ){
. . .
}
. . .
}
Connection string is:
L"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\SomeDir\\SomeDB.accdb"
Everything works as it should until I get to:
hr = ConnectionPtr->Open(bstrEmpty,bstrEmpty,bstrEmpty,-1);
these are the log entries.
onecore\com\combase\dcomrem\resolver.cxx(2303)\combase.dll!00007FFEAB8999FD: (caller: 00007FFEAB8993F3) ReturnHr(1) tid(295c) 80040154 Class not registered
onecore\com\combase\dcomrem\resolver.cxx(2389)\combase.dll!00007FFEAB899466: (caller: 00007FFEAB814459) ReturnHr(2) tid(295c) 80040154 Class not registered
Exception thrown at 0x00007FFEAAD74FD9 in CGMetaData.exe: Microsoft C++ exception: long at memory location 0x0000006C48D6C850.
Exception thrown at 0x00007FFEAAD74FD9 in CGMetaData.exe: Microsoft C++ exception: long at memory location 0x0000006C48D6C954.
Exception thrown at 0x00007FFEAAD74FD9 in CGMetaData.exe: Microsoft C++ exception: long at memory location 0x0000006C48D6CA60.
Exception thrown at 0x00007FFEAAD74FD9 in CGMetaData.exe: Microsoft C++ exception: _com_error at memory location 0x0000006C48D6D220.
Have no idea what any of this means. Would appreciate any help.
-
July 6th, 2022, 05:08 AM
#2
Re: Visual Studio Extracting Data from MSAccess Databases
Perhaps, it is the problem with the DLL registering in win32/64bit systems?
Like discussed here: https://stackoverflow.com/questions/...gistered-error
Victor Nijegorodov
-
July 6th, 2022, 07:08 AM
#3
Re: Visual Studio Extracting Data from MSAccess Databases
As is virtually a near inviolate objective, MS apparently again has taken any and all actions necessary to invalidate any prior solutions. The suggested solutions direct one to:
Solution: Go into the Project Properties, Compile tab and click "Advanced Compile Options...". Change "Target CPU" to x86, click OK, save and try again
Very effective stopping me cold in my tracks as VS2022 displays no Compile tab when one goes to the Project Properties. The best I could do was to the Configuration Manager, then then the Active Solution Platform and change the setting from X64 to X86. However, attempting to build under that setting spawned errors such as:
Severity Code Description Project File Line Suppression State
Error (active) E0020 identifier "adCmdText" is undefined CGMetaData C:\cds\ClassLibrary\CAccessDBManager.cpp 128
Error (active) E0020 identifier "adCmdText" is undefined CGMetaData C:\cds\ClassLibrary\CAccessDBManager.cpp 217
Error (active) E0020 identifier "adLockOptimistic" is undefined CGMetaData C:\cds\ClassLibrary\CAccessDBManager.cpp 128
I believe these are related to :
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "ADOEOF")
#include "comutil.h"
#include "afxtempl.h"
Suggestions??
-
July 6th, 2022, 08:44 AM
#4
Re: Visual Studio Extracting Data from MSAccess Databases
Try to add ADODB:: prefix like
ADODB::adCmdText, ADODB::adLockOptimistic and so on.
it is the fastest way to overcome this issue. (I used it with a success)
Victor Nijegorodov
-
July 22nd, 2022, 06:03 AM
#5
Re: Visual Studio Extracting Data from MSAccess Databases
I am using Access 2010 and VB 2012. I have created a database in Access 2010. I usually connect database to Visual Basic - Tools - Connect to Database. Is it right?
After that, how to display the values of Access Database in Textbox or Labels?
I tried doing this Accessname1 = TextBox1 but it didn't work.
Please Help
Last edited by existenceproduct; July 22nd, 2022 at 06:07 AM.
-
July 22nd, 2022, 07:18 AM
#6
-
July 22nd, 2022, 05:21 PM
#7
Re: Visual Studio Extracting Data from MSAccess Databases
had to put this down for a while. am assuming you can imagine my distaste for
changing code that has worked for 15 or so years but will look into this.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|