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.
Ho provato ad usare questo che ho trovato ma non funzionacodice: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
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
Avete suggerimenti?

Rispondi quotando