Disconnessione backend.

di il
17 risposte

Disconnessione backend.

Buonasera. Avrei un quesito da porre. Ho realizzato un'applicazione Access con strutturazione frontend-backend.

Alla chiusura del frontend esiste la necessità di dover disconnettersi dal backend. La domanda che pongo è la seguente: qual'è il moglior modo di gestire la disconnessione. Ho ho pensato di creare una macro che, eseguendosi automaticamente alla chiusura del frontend, lanci una routine che permetta la disconnessione da backend. In merito alla macro esiste una parola riservata che Access riconosce come macro da lanciare alla chisura, come nel caso della macro denominata Autoexec che si segue automaticamente all'avvio?

Grazie.

17 Risposte

  • Re: Disconnessione backend.

    Ma che intendi con disconnessione? Se il frontend è chiuso cosa si deve disconnettere?

  • Re: Disconnessione backend.

    Se la connessione tra frontend e backend avviene attraverso tabelle linkate, al momento di chiudere il frontend non devo prima disconnettermi dal backend? E' sufficiente la sola chiusura del frontend?

  • Re: Disconnessione backend.

    10/01/2023 - Antony73 ha scritto:


    Se la connessione tra frontend e backend avviene attraverso tabelle linkate, al momento di chiudere il frontend non devo prima disconnettermi dal backend? E' sufficiente la sola chiusura del frontend?

    Credo che ci sia pochissima chiarezza sui termini: quando si sente parlare di frontend, ci si riferisce generalmente a una applicazione Web o a un client.

    Nessuna connessione avviene “attraverso tabelle linkate”: la app di riferimento può essere un client nativo che gira su un sistema operativo (es. Windows) ed effettua la connessione a un DB, oppure una Single Page Application che gira in un browser e parla con un backend che a sua volta si collega a un DB, o una applicazione Web lato server gestita da un backend che si collega a un DB.

    Se il frontend di cui parli è una applicazione Access, dal momento in cui crei un recordset e usi un cursore per navigare una tabella, stai effettivamente parlando con il DB correlato, ma è sufficiente chiudere il recordset e la connessione per “scollegarti” senza dover richiamare istruzioni apposite o dover lanciare macro.

    In caso di dubbi, spiega meglio lo scenario in cui ci troviamo perché - causa commistione di terminologia - non si è capito benissimo…

  • Re: Disconnessione backend.

    Ovviamente il frontend è un'applicazione Access e lo è anche il backend.

    è sufficiente chiudere il recordset e la connessione per “scollegarti” senza dover richiamare istruzioni apposite o dover lanciare macro.

    E' la risposta che mi serviva.

    Mi spiego meglio: Il dubbio mi è venuto poichè per qualche motivo l'applicazione una volta chiusa rimane tra i processi in background e pertanto nel momento in cui cerco di riavviarla, il riavvio non avviene. Sono costretto ad arrestare il processo dal task manager per riavviare Access. Per questo motivo ho ricondotto a qualche connessione rimasta aperta.

  • Re: Disconnessione backend.

    Quindi le tabelle linkate non c'entrano nulla.

    Quando hai detto che avevi recordset o connection aperte (che vanno comunque chiuse a prescindere quando non servono e in ogni caso alla chiusura dell'applicazione)?

    Quando hai detto che l'applicazione rimane tra i processi anche se chiusa? Sicuro che sia a causa di un recordset non chiuso?

    In ogni caso, alla chiusura dell'applicazione gli oggetti vanno chiusi/distrutti nel tuo codice. Quindi la chiusura basta.

  • Re: Disconnessione backend.

    Si è probabile che sia dovuto ad oggetti non distrutti alla chiusura dell'applicazione. Nel codice sono creati degli oggetti recordset associati a delle sottomaschere. Esiste un modo per vedere quali oggetti rimangono ancora aperti e/o non distrutti alla chiusura dell'applicazione?

  • Re: Disconnessione backend.

    No, non è questa la strada. Gli oggetti vanno creati, usati, chiusi/distrutti. Non devi arrivare nel momento della chiusura con oggetti attivi che non sai dove stanno.

  • Re: Disconnessione backend.

    Se io scrivo un codice del tipo:

     dim rst as Dao.Recordset
     set rst= Form_SM.Recordset
     .
     .
     .
     rst.Close
     set rst=Nothing

    creo un oggetto recordset associato ad una sottomaschera denominata Form_SM, noto che la i controlli della sottomaschera, alla chiusura dell'oggetto rst, perdono l'associazione dei campi loro associati. Forse è qui il problema.

  • Re: Disconnessione backend.

    Intervengo ora… spero di aver capito…!

    Normalmente, si linkano le Tabelle al Login del Client(ovviamente se è presente una gestione Utenti), oppure su macro AUTOEXEC, si lancia una Funzione che riaggancia il client.

    Non esiste una Macro equivalente alla chiusura, ma la tecnica che si usa peraltro utile anche per altri scopi, è quella di lanciare sempre su AUTOEXEC una Form specifica in modalità [acHidden] ovvero nascosta, e su UNLOAD di questa, Evento generato proprio con la richiesta di Chiusura di Access, si va gestire la rimozione delle LINKED.

    Il codice è abbastanza banale, basta ciclare le Linked e con DeleteObject rimuoverle.

  • Re: Disconnessione backend.

    Si è chiaro. Pertanto occorre rimuovere le linked alla chiusura dell'applicazione. Ma come genero la richiesta di chiusura di access? con la semplice chiusura dell'applicazione?

  • Re: Disconnessione backend.

    Si scusami avevi già risposto alla mia domanda. Il problema è che dopo il tuo suggerimento continuo ad evere il problema sul frontend. Il file con estensione .laccb non si chiude sempre e il file con l'estensione .accdb non si avvia.

  • Re: Disconnessione backend.

    Evidentemente hai qualche cosa che “Disturba”, in questi casi devi fare DEBUG, cosa che reputo un'arte, ed iniziare a togliere cose finchè non elimini la parte che genera l'anomalia. 

  • Re: Disconnessione backend.

    Ma le istruzioni sopra scritte sono corretto? Nel senso che un oggetto recordset di maschere deve essere chiuso e distrutto come i recordset create fa query i tabelle. Forse può dipendere fa qualcosa di questo tipo mal gestito?

  • Re: Disconnessione backend.

    La questione dei RS non c'entra nulla.

Devi accedere o registrarti per scrivere nel forum
17 risposte