problema con pannello comandi

Anonimo
2012-05-07T10:46:11+00:00

Buongiorno a tutti!

Mi succede una cosa strana (tanto per cambiare)!

OS=Vista Business SP2

Access 2007 SP3

Dopo l'uscita da un programma di Access, mi rimane ancora MSACCESS.EXE in memoria (si vede da "Gestione Attività").

Ciò mi crea problemi in quanto i successivi tentativi di riapertura con il tasto SHIFT trovano il programma bloccato: crea il file .laccdb su disco, ma il file non si apre! Devo necessariamente eliminare la presenza in memoria di Access gorzando la cancellazione con "Gestione Attività".

Sono diventato matto, ma dopo infiniti tentativi ho scoperto che il tutto deriva dal caricamento in avvio della maschera "Pannello Comandi" creata dall'apposito gestore.

Infatti se lancio il programma per la prima volta con il tasto SHIFT e chiudo, in memoria non resta nulla, mentre se lancio lo stesso normalmente, alla sua chiusura (sia dai comandi di Access che dal comando immesso nel pannello) in memoria rimane l'istanza (dico bene?) di Access.

A queste amare conclusioni sono arrivato utilizzando un file di Access vergine nel quale è stata creato il "Pannello Comandi" e nel quale è stato immesso il solo comando di uscita via VBA: l'inconveniente avviene sia che si adoperi questo comando, sia che si esca con i normali comandi di uscita di Access

Per ultimo segnalo anche che l'inconveniente si nota SOLO se il Pannello Comandi viene caricato all'avvio del programma (sia con l'apposita funzione che con macro Autoexec), altrimenti tutto funziona bene.

A disposizione per qualunque altra informazione, grazie per l'attenzione e per l'eventuale collaborazione

franco

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2012-05-21T16:38:36+00:00

A Giorgio e Mauro,

a furia di "sparare nel mucchio" anche un povero operaio dell'informatica come io sono, forse riesce a trovare una provvisoria soluzione, almeno in attesa che ne arrivi una più seria.

Considerato quanto detto sia da te che da Giorgio in precedenza, ho aggiunto all'inizio della funzione "ChiudiAccess" di cui sopra:

    Dim rs As Object

    Set rs = Nothing

Così funziona, anche se non so il perché.

Attendo ulteriori suggerimenti o conclusioni, anche se mi riservo di inviarvi ulteriori esiti qualora ciò che ho notato dovesse venire smentito prossimamente..

Grazie ad entrambi della collaborazione

franco

La risposta è stata utile?

0 commenti Nessun commento

40 risposte aggiuntive

Ordina per: Più recente
  1. Anonimo
    2012-05-21T09:39:52+00:00

    Fatto ma:

    Messo in chiusura del Pannello Comandi

    Function ChiudiAccess()

        Dim vProcesso As Variant

        For Each vProcesso In _

             GetObject("winmgmts:" _

             ).InstancesOf( _

             "win32_process")

            If vProcesso.Name = "MSAccess.exe" Then

                vProcesso.Terminate

             End If

        Next

    End Function

    In effetti chiude l'istanza, e quindi il file programma, ma lascia su disco il file .laccdb

     

    Puntalo e fagli il kill.

    Kill Path.Nome.laccdb

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-05-21T09:26:24+00:00

    Fatto ma:

    Messo in chiusura del Pannello Comandi

    Function ChiudiAccess()

        Dim vProcesso As Variant

        For Each vProcesso In _

             GetObject("winmgmts:" _

             ).InstancesOf( _

             "win32_process")

            If vProcesso.Name = "MSAccess.exe" Then

                vProcesso.Terminate

             End If

        Next

    End Function

    In effetti chiude l'istanza, e quindi il file programma, ma lascia su disco il file .laccdb

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-05-21T09:02:56+00:00

    Il problema NON è quello della ri-registrazione (sarebbe solo una questione di attesa di qualche secondo, meno male!) ma è quello che una volta aperto Access 2007 FUNZIONA MALE!

    Quindi la ri-registrazione ha qualche buco!

    E se chiudi tutti processi Access aperti in precedenza. Una cosa tipo:

    Public Sub mTerminaProcesso()

        Dim vProcesso As Variant

        For Each vProcesso In _

            GetObject("winmgmts:" _

            ).InstancesOf( _

            "win32_process")

            If vProcesso.Name = "Access.exe" Then

                vProcesso.Terminate

            End If

        Next

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-05-21T08:24:20+00:00

    Il problema NON è quello della ri-registrazione (sarebbe solo una questione di attesa di qualche secondo, meno male!) ma è quello che una volta aperto Access 2007 FUNZIONA MALE!

    Quindi la ri-registrazione ha qualche buco!

    La risposta è stata utile?

    0 commenti Nessun commento