Connessione OLEDB errore Interfaccia non registrata

di il
6 risposte

Connessione OLEDB errore Interfaccia non registrata

Ho un problema di connessione ad un database Microsoft con il quale ho lavorato fino a qualche giorno fa, poi non so come, la connessione non ha più funzionato.

Questo è lo script PHP di test per la connessione:
$db = "c:\italsoft\XP-MACRO\XP-DATI\XP-M001\MX-M001.MDB";

$sc = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$db;";

$cn = new COM( "ADODB.Connection" );

$rs = new COM( "ADODB.Recordset" );

$cn->open( $sc );

$query = "SELECT `NRDOC` FROM `DOCFATT`";

$rs->Open( $query, $cn ); // Line #18

if( $rs->EOF ){
    print 'No data found!';
}else{
    while( $rs->EOF === NULL ){
        print $rs->Fields['NRDOC']->value() . '<br />';
        
        $rs->MoveNext();
    }
}
Questo è il risultato:


Ho cercato su google, provato diverse soluzioni, ma niente, il problema non si è risolto. Molti consigliano di installare dei pacchetti driver di Office. Nel mio caso i driver erano già installati, quindi niente di nuovo per me.

L'errore di interfaccia non registrata viene fuori solo se nella stringa di connessione imposto uno dei provider che ho installato altrimenti l'errore non fornisce alcun dettaglio. Questo mi fa pensare che il problema sia qualche impostazione e non la mancanza di file o driver.

Sono due giorni che ci sbatto la testa ma non so più cosa provare.

6 Risposte

  • Re: Connessione OLEDB errore Interfaccia non registrata

    UPDATE

    Continuando ad impazzire per capire cosa non vada, ho pensato di dare un'occhiata al registro eventi di Windows ed è uscito fuori un errore che ho provato a risolvere da me, seguendo alcune soluzioni trovate online, ma di fatto non è cambiato nulla.
    Vorrei chiedere ai moderatori se a questo punto è meglio spostare la discussione sotto Windows anziché PHP?

  • Re: Connessione OLEDB errore Interfaccia non registrata

    Dal momento che usi un file MDB non ha senso usare il provider ACE, che oltretutto deve essere preventivamente installato per poter funzionare.
    Devi usare il Provider Jet OleDb 4.0 che, al contrario del precedente, è già installato di default su tutte le versioni di Windows, a partire da Windows 2000 in po.

    Qui trovi la stringa di connessione:
    https://www.connectionstrings.com/microsoft-jet-ole-db-4-0/

    scegli il formato del tuo MDB (2000, 2002 o 2003) e risolvi senza problemi.
  • Re: Connessione OLEDB errore Interfaccia non registrata

    Grazie per la risposta.

    Ho abbandonato il provider Jet Oledb 4.0 perché il nuovo server gira a 64 bit e anziché forzare la modalità a 32 bit ho preferito trovare/provare un provider più moderno e performante ma soprattutto che giri a 64 bit. Il provider ACE è stato installato con gli appositi driver di Microsoft del 2010.

    Con il provider Jet il risultato è questo:
    Fatal error: Uncaught com_exception: Source: ADODB.Connection Description: Impossibile trovare il provider. È possibile che non sia installato correttamente. in C:\wamp64\www\test.php on line 13 com_exception: Source: ADODB.Connection Description: Impossibile trovare il provider. È possibile che non sia installato correttamente. in C:\wamp64\www\test.php on line 13 Call Stack: 0.0010 411440 1. {main}() C:\wamp64\www\test.php:0
    In questo momento sto lavorando sulle autorizzazioni di Windows. Vi aggiorno presto.
  • Re: Connessione OLEDB errore Interfaccia non registrata

    mikelefree ha scritto:


    ho preferito trovare/provare un provider più moderno e performante ma soprattutto che giri a 64 bit.
    Purtroppo non è così.
    Ma come hai evidenziato tu stesso il problema è un'altro:.
    Fatal error: Uncaught com_exception: Source: ADODB.Connection Description: Impossibile trovare il provider. 
    [/quote]
  • Re: Connessione OLEDB errore Interfaccia non registrata

    Grazie per la risposta.

    Mi sono basato su questo articolo a suo tempo e aveva funzionato alla grande. Avevo installato il pacchetto driver del 2010 e cambiato la stringa di connessione e via.

    UPDATE 2

    Ho provato ad autorizzare elementi in base agli errori del registro eventi di Windows. In merito all'ultimo UPDATE postato, ho effettuato delle operazione di modifica dei permessi sulle chiavi di registro, sono intervenuto anche su "Servizi Componenti->Config DCOM". Ora il server Apache non si avvia più e crea altre voci "Errore" nel registro eventi. Domani proverò con una installazione pulita di Windows e procedendo step-by-step spero di individuare il problema e stroncarlo sul nascere o evitarlo o risolverlo.
  • Re: Connessione OLEDB errore Interfaccia non registrata

    Giusto per dare una chiusura all'argomento.

    Ho risolto con una installazione pulita di Windows. Per far funzionare il provider ace 12.0 ho installato i driver "Microsoft Access Database Engine 2010" sia x86 che x64 e tutto è filato liscio.

    Grazie per l'aiuto
Devi accedere o registrarti per scrivere nel forum
6 risposte