Ciao a tutti,
ho questo codice che mi esporta un file mdb, funziona ed i record e la tabella sono scritti correttamente nel file, ma il file mdb rimane bloccato (e' presente anche un file laccdb con lo stesso nome nella cartella) e non posso spostarlo anche se chiudo esplicitamente le connessioni.
codice:
Public Sub ExportToMdb(query As String, mdbFileName As String)
' Stringa di connessione per il database di origine (ACCDB)
Dim sourceConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & perc_db & ";Persist Security Info=False;"
' Stringa di connessione per il nuovo database MDB
Dim mdbConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\sabello\Documents\Visual Studio 2022\progetti\axactorDI\axactorDI\bin\Debug\net8.0-windows\mdb\" & mdbFileName & ".mdb;"
' Nome della tabella nel nuovo database MDB
Dim tableName As String = System.IO.Path.GetFileNameWithoutExtension(mdbFileName)
' Crea il nuovo database MDB
Dim cat As Object = CreateObject("ADOX.Catalog")
cat.Create(mdbConnectionString)
cat = Nothing
' Esegui la query sul database di origine e ottieni i dati
Dim dataTable As New DataTable()
Using sourceConnection As New OleDbConnection(sourceConnectionString)
Using adapter As New OleDbDataAdapter(query, sourceConnection)
sourceConnection.Open()
adapter.Fill(dataTable)
End Using
sourceConnection.Close()
End Using
' Crea la tabella nel nuovo database MDB e inserisci i dati
Using mdbConnection As New OleDbConnection(mdbConnectionString)
mdbConnection.Open()
' Crea la tabella
Dim createTableCommand As String = "CREATE TABLE [" & tableName & "] ("
For Each column As DataColumn In dataTable.Columns
createTableCommand &= "[" & column.ColumnName & "] " & GetOleDbType(column.DataType) & ","
Next
createTableCommand = createTableCommand.TrimEnd(","c) & ")"
Using cmd As New OleDbCommand(createTableCommand, mdbConnection)
cmd.ExecuteNonQuery()
End Using
' Inserisci i dati
For Each row As DataRow In dataTable.Rows
Dim insertCommand As String = "INSERT INTO [" & tableName & "] VALUES ("
For Each column As DataColumn In dataTable.Columns
insertCommand &= "?,"
Next
insertCommand = insertCommand.TrimEnd(","c) & ")"
Using cmd As New OleDbCommand(insertCommand, mdbConnection)
For Each column As DataColumn In dataTable.Columns
cmd.Parameters.AddWithValue("@" & column.ColumnName, row(column))
Next
cmd.ExecuteNonQuery()
End Using
Next
mdbConnection.Close()
mdbConnection.Dispose()
End Using
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
End Sub
Ho provato ad usare questo che ho trovato ma non funziona
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
Avete suggerimenti?