[VB2010Express] Errore su connessione database MSAccess

martedì 10 aprile 2012 - 14.38
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  Visual Studio Express  |  Access (.mdb)  |  Office 2010

longpajr Profilo | Newbie

Ciao a tutti!!!

Mi presento anche se è da parecchio che sono iscritto al sito.

Mi chiamo Roberto, ho 29 anni e programmo da parecchi anni (è stato un mio pallino fino dall'Amstrad 464Plus). Premetto che non ho mai avuto problemi ad interfacciarmi con i database (MSAccess 97-2003, SQL 2000 al 2008, cartelle di lavoro di Excel).

Ora sono in una situazione di stallo e non riesco a capire dove sto sbagliando.

Questa è la situazione:
- Ambiente Microsoft Windows 7 Professional 64-bit
- Microsoft Visual Basic 2010 Express Edition con SP1;
- Microsoft Office Professional Plus 2010 (64 bit);

Sto cercando di connettermi ad un database MSAccess che ho creato volutamente in versione mdb (2003) per massimizzare la compatibilità con client non "aggiornatissimi".

Ho provato ad agganciarlo ad un progetto che era già in corso d'opera ma non si connette restituendo errore di provider non specificato e di origine dati non trovata sia usando la classe OleDb che la classe Odbc ed indipendentemente dal fatto che io usi una stringa di connessione "Driver={Microsoft Access Driver (*.mdb, *.accdb)}" piuttosto che "Provider=Microsoft.ACE.OLEDB.12.0;" oppure "Provider=Microsoft.Jet.OLEDB.4.0;" (che però è valido per le sole piattaforme a 32bit) o ancora creando un DSN locale.

Su internet avevo letto di modificare la piattaforma di compilazione in modo tale da farlo lavorare in modalità 32bit ma non vedo l'opzione nella schermata quindi non posso procedere in quel senso.

Ho provato anche a re-installare il pacchetto "Access Database Engine" (32 e 64 bit) ma non è cambiato nulla.

Ho creato un progetto di prova per verificare se il problema poteva dipendere da qualche errore nei file di progetto e/o riferimenti ma continua a verificarsi.

Che posso fare?

Grazie a tutti per l'attenzione.



TheLordOfDreams82
-------------------------------------------------------------------------------------------------
Aggiornamento 1: Smanettando ancora tra le ConnectionStrings e l'ODBC sembra ora che se imposto un DSN sul "Driver Access (*.mdb)" usando l'utility nella cartella SysWOW64 riesco ad aprire il db e a lavorarci sopra. Il problema a questo punto rimane sul 64-bit.
Aggiornamento 2: Ho scoperto la natura del problema. Visual Basic 2010 Express sembra che compili nativamente in piattaforma x86. Ora vedo di modificare le mie procedure. Grazie a tutti comunque.

Gho5t Profilo | Junior Member

Ciao,
potresti postare il codice con cui ti connetti a questo database access e dirmi se questo database access ha una password?
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

luka82 Profilo | Junior Member

Hai provato ad installare il Provider di Access 2003?
http://www.microsoft.com/downloads/it-it/details.aspx?familyid=6ccd8427-1017-4f33-a062-d165078e32b1
Procedi anche con l'installazione di MDAC 2.7
Per le stringhe di connessione segui: http://www.connectionstrings.com/

Per quanto riguarda la modifica della compilazione a 32 Bit vai in "Esplora Soluzioni"->Tasto destro sulla soluzione->Compilazione->Opzioni di compilazione avanzate->CPU di destinazione->x86

Ps. Visto che puoi installare e distribuire i Provider di Access gratuitamente, ti consiglio di utilizzare un Db Access almeno alla versione 2007(*.accdb).

longpajr Profilo | Newbie

Il sito connectionstrings.com lo conosco...

Per il problema con il driver proverò il link che mi hai suggerito. Per ora sembra che utilizzando il DSN funziona senza problemi.

Adesso scarico il file e vi aggiorno!
TheLordOfDreams82

giucorn Profilo | Junior Member

Ciao, ho lo stesso tuo problema, ho un progetto di eun applicativo fatto con visual studio 2005 e questo da come errore "Il provider 'microsoft.jet.oledb.4.0. non è registrato nel computer" come hai risolto il problema?

Grazie....

alextyx Profilo | Expert

C'è un'altra discussione analoga nella quale ho postato questo link:

http://forum.masterdrive.it/visual-basic-net-18/vb2010e-errore-so-x64-provider-microsoft-jet-oledb-4-0-non-registrato-55029/#post244877

Seguendo quella discussione si scopre come far compilare vs2010 (forse anche 2005, ma non ho provato) in X86, giacchè di default è impostato per anyCPU. Normalmente l'opzione non compare, ma c'è indicato cosa spuntare e dove, per farla comparire. Se vi può interessare.... :)

ravalon Profilo | Expert

Ciao, vai sulle opzioni di compilazione e al posto di compilare per ANY CPU metti la compilazione per x86, compili e il gioco è fatto, ti funzionerà la versione a 32 bit del driver di collegamento (dato che una a 64 non esiste) credo passando per l'esecuzione di SysWOW64...

Insomma, io per un cliente con Windows 7 64 bit che non riusciva a leggere il mio gestionale che richiamava Access (.MDB) ho risolto cosi e mi ha confermato che ora gli funziona.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5