>da un database aperto ad un certo punto ne voglio aprire un altro e
>chiudere quello aperto. questo è il codice che uso su un pulsante di
>comando...
>Shell SysCmd(acSysCmdAccessDir) & "MSAccess.exe D:\Programma\aps.mde",
>vbNormalFocus
>DoCmd.Quit
La richiesta di Augusto non e' cosi banale...
Pure io ho un problema, non sull'apertura del file Access da VBA, quanto
sulla chiusura.
Dopo il lancio con Shell di un DB, l'istanza resta attiva come processo
anche chiudendo il file, impedendo l'avvio di altri file Access.
Spiegando piu in dettaglio, ho 3 file Access che sono una *copia dello
stesso programma* ma con nomi diversi:
- Access.accdb - per il lancio programma stand-alone
- ERP.accdb - per lancio programma da pulsante su maschera dell'ERP
- Outlook.accdb - per lancio programma da Outlook con VBA
Sono 3 copie uguali dello stesso programma perche ero stanco di battagliare
controllando se Access gia aperto in memoria, condivisione form, ecc.
Il problema è che quando lancio il programma da VBA Outlook, esso parte
correttamente, ma quando esco da Access l'istanza resta attiva come
processo.
Posso buttarla giu solo con Task Manager.
In pratica Outlook.accdb parte, poi esco, ma non riesco ad aprire gli altri
ERP.accdb e Access.accdb.
Dove sbaglio?
Forse perché prima apro una connessione DAO e non la chiudo correttamente
distruggendo l'oggetto nel punto corretto?
Grazie se potete darmi una dritta.
Il sorgente che utilizzo in Outlook è il seguente:
Public Const Sistema = "C:\Programmi\Acc\Outlook.accdb"
Public Const Connessione = "C:\Program Files\Microsoft
Office\Office14\MSACCESS"
Sub AccCall(Selettore As Variant)
On Error GoTo Err_AccCall
Dim db As DAO.Database
Dim Filtro As String
Dim Servizio As String
If Nz(Selettore, "") = "" Then Exit Sub
Select Case Selettore:
Case "Documento":
Servizio = "fDocumento"
Filtro = SelezioneLeggi
SQL = "INSERT INTO Filtro(Filtro01) VALUES ('" & Filtro & "')"
Case "Anagrafica":
Servizio = "fAnagrafica"
Filtro = SelezioneLeggi
SQL = "INSERT INTO Filtro(Filtro01) VALUES ('" & Filtro & "')"
Case Else:
Servizio = "fMain"
End Select
Set db = DAO.OpenDatabase(Sistema)
db.Execute "DELETE * FROM Filtro"
db.Execute SQL
db.Close
Dim Retval As Variant
Retval = Shell("""" & Connessione & """" & " " & """" & Sistema & """" &
" /x Avvio /cmd " & """" & Servizio & """", vbNormalFocus)
Exit_AccCall:
Exit Sub
Err_AccCall:
Response = MsgBox("AccCall - " & Err.Description, vbCritical, "Errore")
Resume Exit_AccCall
End Sub
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus