+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Delphi-EX] - ADO e tabella collegata Excel

  1. #1
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58

    [Delphi-EX] - ADO e tabella collegata Excel

    Buongiono a tutti..
    Utilizzando ADO32 con il driver JET 4.0 OLE DB Provider..

    Ho un problema su una query su una tabella xls collegata aperta come query..
    premessa il programma funziona da 10 anni..
    di punto in bianco da quest'errore
    Errore non previsto del dirver del database esterno (1)

    anche cercando in rete non trovo un problema analogo..
    ho provato a diminuire le righe della tabella e non funziona lo stesso..
    ho provato a lanciare la query da Access è funziona..
    tutte le altre tabelle collegate funzionano.. esclusa questa! avete delle soluzioni???

    grazie anticipatamente.

  2. #2
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58
    Mi sono accorto di una cosa..
    che se il file è aperto da Excel funziona.. mentre prima era il contrario.. il programma per poter fare la query il file Excel non doveva essere aperto!!
    è veramente strano!

  3. #3
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,051
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Mi sono accorto di una cosa..
    che se il file è aperto da Excel funziona.. mentre prima era il contrario.. il programma per poter fare la query il file Excel non doveva essere aperto!!
    è veramente strano!
    Prova ad aggiungere qualche dettaglio relativamente a
    - stringa di connessione che usi
    - architettura CPU: 32bit, 64bit

    Magari fai anche un esperimento: apri il foglio Excel dall'applicazione usando un'altra workstation e/o sistema, per vedere che non dipenda dalla tua implementazione specifica ma da un problema di configurazione della macchina.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  4. #4
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58
    Grazie per l'interessamento,
    CPU64 Bit
    Connessione conn DbGO - ADO32bit

    Ripeto ha sempre funzionato bene, ora di punto in bianco qualsiasi tabella collegata con una tabella Excel non funziona..
    devo aprirla con Excel, a quel punto il programma funzione e apre la query! ù
    tra l'altro molto molto lentamente..

    ecco la stringa di connessione..
    codice:
    Provider=Microsoft.Jet.OLEDB.4.0;
    User ID=Admin;
    Data Source=\\server\Ufficio Tecnico\certificati\certificati MAT.mdb;
    Mode=Share Deny None;
    Jet OLEDB:System database="";
    Jet OLEDB:Registry Path="";
    Jet OLEDB:Database Password="";
    Jet OLEDB:Engine Type=5;
    Jet OLEDB:Database Locking Mode=1;
    Jet OLEDB:Global Partial Bulk Ops=2;
    Jet OLEDB:Global Bulk Transactions=1;
    Jet OLEDB:New Database Password="";
    Jet OLEDB:Create System Database=False;
    Jet OLEDB:Encrypt Database=False;
    Jet OLEDB:Don't Copy Locale on Compact=False;
    Jet OLEDB:Compact Without Replica Repair=False;
    Jet OLEDB:SFP=False;
    ciao a tutti

  5. #5
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58
    Ciao a tutti.. mi sono accorto di una cosa, il problema non è tanto su Delphi ma del driver JET..
    (oppure su Access, perchè anche con altri driver il problema continua a persistere, ad esempio ODCB)
    praticamente ora la tabella non è più disponibile se l'istanza di Excel non è aperta, scompare proprio dallo stack..

    Come si può vedere la tabella è collegata..
    Forse la soluzione potrebbe essere sul modo di collegare la tabella, ricordo che su access è possibile fare un collegamento ad un foglio Excel direttamente con una select SQL, specificando il percorso del file XLS.. ma non ricordo com'è la sintassi e non ho più appunti validi..
    voi avete altre soluzioni?? vi sono capitate cose del genere??

    ciao e grazie

  6. #6
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,051
    Mi viene il dubbio che, in qualche modo, il driver possa andare a riutilizzare una istanza esistente di Excel, il che spiegherebbe la facile lettura del file quando questo è già stato aperto da te. Analogamente, potrebbe esserci qualche istanza di Excel in running che però rimane bloccata per qualche motivo, e il driver si rifà a questa istanza non riuscendo però ad aprire la cartella di lavoro.

    Io ho smesso di utilizzare questi driver per l'accesso ai file: sebbene si tratti di driver Microsoft, è meglio adottare una libreria o un set di componenti che acceda a Excel conoscendone il formato, piuttosto che interfacciarsi a una istanza di Excel che potrebbe anche non essere installato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  7. #7
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58
    OK..
    illuminami, allora cosa dovrei usare??!

    cmq ha sempre funzionato anche con Excel non installato!

    Il problema che prima funzionava... anche con vecchi programmi scritti in Delphi7..

    non riesco a capire il motivo..

    ciao

  8. #8
    L'avatar di dante.3d
    dante.3d non è in linea Scolaretto
    Post
    58
    Ciao a tutti, Ho trovato il problema..
    CAUSA: L'aggiornamenti di sicurezza di Windows rilasciato da Microsoft il 10/Ottobre/2017 (documentato a questo link https://support.microsoft.com/it-it/...date-kb4041678 "October 10, 2017—KB4041678 (Security-only update)") danneggia un componente di sistema deputato alla lettura dei file EXCEL appartenente al motore JET (file MSEXCL40.DLL).

    Tutti i dettagli tecnici dell'errore e le possibili soluzioni temporanee, in attesa che Microsoft ponga rimedio al problema, sono descritte al link
    https://blogs.msdn.microsoft.com/dat...urity-updates/ (“Unexpected error from external database driver (1). (Microsoft JET Database Engine)” after applying October security updates.)

    SOLUZIONE: Per quanto riguarda il collegamento con il JET, per bypassare il problema in attesa della risoluzione definitiva da parte Microsoft, per sostituire il componente JET Provider (Microsoft.Jet.OLEDB.4) con il nuovo componente ACE Provider (Microsoft.ACE.OLEDB.12).
    se come me utilizzate un file udl esterno per fare i collegamenti ai DB la soluzione è indolore (senza ricompilare il programma) basta riallacciare la tabella utilizzando il nuovo provider direttamente del UDL..

    Se vi compare un errore del tipo: “Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato nel computer locale. (error type: InvalidOperationException)” significa che sulla macchina non sono presenti versioni recenti di Office (>=2010). Questo problema si risolve installando i pacchetti prelevabili al link https://www.microsoft.com/it-it/down....aspx?id=13255 “Microsoft Access Database Engine 2010 Redistributable” 32bit o 64bit a seconda della piattaforma in uso.

    spero Vi sia utile..
    ciao a tutti

  9. #9
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,051
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Ciao a tutti, Ho trovato il problema..
    Che dire, grazie mille per le indicazioni e per la precisione con cui le hai riportate: se qualcuno si troverà ad affrontare il medesimo problema, sicuramente faranno comodo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi