none
Corruzione database di Access 2016 a 32 bit RRS feed

  • Domanda

  • Ciao a tutti.
    Ho sviluppato un'applicazione client-server con Access 2016 a 32 bit e l'ho installata sui pc di un mio cliente, il quale però lamenta spesso problemi di corruzione del db, salvando i dati in una tabella, tramite una maschera.

    L'ambiente di lavoro è piuttosto disomogeneo ed è così strutturato:
    2 pc hanno Office 365 completo (2016 32 bit);
    3 o 4 pc hanno Office home and business 2013 32 bit + Access runtime engine 2013 32 bit;
    1 pc ha LibreOffice 4.2.4.2, Office 2007 Professional ed anche Office home and business 2010 32 bit + Access runtime engine 2013 32 bit.

    Le varie postazioni, nella normale fase di lavoro, accedono simultaneamente al DB sul server, ma spesso il database viene segnalato come corrotto e non si riesce più a lavorare, se non dopo aver eseguito il comando "Compatta e ripristina".
    Il fatto di avere tutte queste versioni diverse di Aaccess sui vari client, può essere la causa di questo problema? O i motivi possono essere altri?
    Questi problemi potrebbero essere legati all'uso di DAO, piuttosto che di ADODB?

    Vi ringrazio in anticipo, buona giornata a tutti.

    Giulio
    • Modificato Giulio2301 venerdì 20 luglio 2018 12:49
    venerdì 20 luglio 2018 11:22

Tutte le risposte

  • Sig. Giulio la vedo dura.

    Sulla sua macchina di sviluppo dovrebbe copiare il file Access più datato, credo quello del 2013. Credo, ma è solo una speranza, che le versioni di Access più recenti riescano a gestire i precedenti.

    Altra possibilità è creare una routine che riconosca il computer su cui sta girando e cambi di conseguenza la stringa di connessione. Il resto del programma non varia.

    La mia esperienza in merito è limitata, feci un programma nel 2010 su dB access e poi aggiornato ogni anno con vb diverso e non ho mai avuto problemi.

    Le rispondo solo per sollecitare altri più bravi di me, e in questo forum ce ne sono tanti.

    Buone cose

    Celestino




    • Modificato CelestinoV venerdì 20 luglio 2018 14:06
    venerdì 20 luglio 2018 13:45
  • Grazie per la risposta Celestino.

    Sulla mia macchina di sviluppo ho gli stessi file del cliente (sia applicazione che db), che inizialmente erano stati creati con Access 2013 e su cui successivamente ho proseguito gli sviluppi con il 2016 (sempre a 32 bit).

    Su tutti i pc del cliente c'è la stessa versione della mia applicazione e c'è l'engine di access 2013 a 32 bit, quindi pensavo che potesse andare bene la stessa stringa di connessione per tutti i client.

    Non ho usato l'engine 2016 perchè l'installazione di quest'ultimo non riconosceva nemmeno i file di access e quindi l'ho dovuta togliere:
    non so perchè ma i file di access rimanevano con l'icona bianca generica, come se non fosse installato nulla, problema che ho segnalato in un altro thread.

    Grazie ancora e buon proseguimento anche a lei.

    Giulio

    sabato 21 luglio 2018 10:00
  • Vediamo se ho capito, magari collegando i suoi due post.

    a.       Lei ha un cliente che ha più postazioni

    b.      Ogni postazione ha una sua versione di Access

    c.       Il cliente ha difficoltà ad uniformare le versioni di Access

    Per gestire i dati io consiglierei:  LocalDB, XML, Access

    1)      Il suo applicativo deve prelevare dei dati dai vari Access elaborarli e aggiornare i database con le conclusioni:

    sul mio computer di produzione porterei tutti gli Access (ammettendo che siano tutti con tabelle diverse), ricaverei tutte le stringhe di connessione, li aggiornerei all’Access Database Engine più aggiornato  che ho installato sulla macchina e in fase di load del programma scriverei due righe di codice:

        Dim StringaDiConnessione As String = ""

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    #If DEBUG Then

            StringaDiConnessione = MiaStringa

    #Else

            Select Case NomeComputer

                Case postazione1

                    StringaDiConnessione = PrimaStringa

                Case postazione2

                    StringaDiConnessione = SecondaStringa

            End Select

    #End If

        End Sub

    In questo modo posso lavorare tranquillo sia in fase di debug che in fase di release su ogni macchina.

    Non è proprio il massimo perché eventuali errori degli operatori si sommeranno ai suoi (malgrado 2000 debug qualche cosa sfugge sempre) ed il cliente li attribuirà sempre a lei.

    2)      Il suo applicativo ha un database diverso da quello installato sulle varie postazioni

    In questo caso eviterei Access, ma utilizzerei LocaDB che ha una piattaforma diversa, permette 2gb di dati ed è gratuito.  Non mi interesserebbe assolutamente quale versione di Access hanno le varie postazioni. Eventualmente se necessita esportare i dati dal suo database verso Access, con poche righe di codice, esporterei le varie query in formato XML. Tutti gli Access possono importare i dati in formato XML. Non escluderei la possibilità di visualizzare i risultati con report.

    Spero che ci sia il suo caso

    Stia bene

    Celestino

     



    domenica 22 luglio 2018 09:04
  • Salve,

    se il problema esiste ancora:

    Attualmente la causa più frequente per corruzioni di file di Access è un update di Windows 10 dal maggio che ha (re-) introdotto un problema con il caching di Windows. Il workaround di spegnere il caching nel registro aiuta ma puo causare problemi di performance.

    Purtroppo non è chiaro (anche per la MS) se un update di Win10 in luglio ha veramente curato il problema o no. Potresti scrivere le tue esperienze in questo rispetto qui perché raccogliamo rapporti per il team di Access.


    Karl
    http://www.AccessDevCon.com
    http://www.donkarl.com

    domenica 26 agosto 2018 11:42