Ciao a tutti,
ho intuito dove potrebbe essere il problema... ma non sono ancora arrivato alla soluzione...
Quando eseguo solo questa funzione il database viene chiuso correttamente:
codice:
Private Sub cmdEseguiMacro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEseguiMacro.Click
Dim id As Integer
Dim i, j As Integer
Dim strApp As String
If dgvMacro.Rows.Count = 0 Then
MsgBox("Attenzione!!! Lista macro vuota!!!", MsgBoxStyle.Critical, TitoloApp)
Exit Sub
End If
id = dgvMacro.Rows(dgvMacro.CurrentRow.Index).Cells(0).Value()
pnlAttesa.Visible = True
lblTitolo.Text = ListaMacro(id).NomeMacro
' Apro il file access visibile
lblAttesaOperazione.Text = "Connessione al db in corso"
Me.Update()
ApriFileAccess(accApp, ProprietaFile.PercorsoLocale & ProprietaFile.NomeFile, True)
For i = 0 To ListaMacro(id).ContAzioni - 1
Select Case ListaMacro(id).ListaAzioni(i).TipoAzione
Case AZIONE_SETWARNING
If ListaMacro(id).ListaAzioni(i).ListaArgument(0) = "0" Then
strApp = "Off"
Else
strApp = "On"
End If
lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione & " " & strApp
Me.Update()
accApp.DoCmd.SetWarnings(ListaMacro(id).ListaAzioni(i).ListaArgument(0))
Case AZIONE_OPENQUERY
lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione & " - " & ListaMacro(id).ListaAzioni(i).ListaArgument(0)
Me.Update()
accApp.DoCmd.OpenQuery(ListaMacro(id).ListaAzioni(i).ListaArgument(0))
Case AZIONE_MSGBOX
lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione
MsgBox(ListaMacro(id).ListaAzioni(i).ListaArgument(0), ListaMacro(id).ListaAzioni(i).ListaArgument(2), ListaMacro(id).ListaAzioni(i).ListaArgument(3))
End Select
Next
pnlAttesa.Visible = False
' Chiudo il file access
ChiudiFileAccess(accApp)
End Sub
Il problema allora è nella funzione DammiDatiDataBase che non rilascia tutte le risorse.
E' come se i comandi
codice:
System.Runtime.InteropServices.Marshal.ReleaseComObject(Documento)
System.Runtime.InteropServices.Marshal.ReleaseComObject(Contenitore)
non venissero minimamente calcolati dal programma.
Andrea