Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Compattare database access 2007
mercoledì 27 dicembre 2006 - 10.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
mer 27 dic 2006 - 10:55
salve a tutti
fino alla versione 2003 usavo la dll : jro
ma ora non va bene per il database access 2007 in quanto da errore "formato database non riconosciuto"
cosa posso usare?
grazie
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 27 dic 2006 - 12:06
Magari il mio blog ti può aiutare
http://community.visual-basic.it/lucianob/archive/2006/12/17/18246.aspx
Ovviamente devi avere caricato il driver
http://community.visual-basic.it/lucianob/archive/2006/12/17/18244.aspx
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
mer 27 dic 2006 - 12:59
ok
ora ho una difficilta'
come posso utilizzare i driver?
ovvero...quale dll devo referenziare?
grazie
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 27 dic 2006 - 13:06
Per la connessione al database devi semplicemente impostare la stringa corretta.
Non devi mettere riferimenti se non quelli necessari a jro.
Ovviamente se fai tutto da vb.net.
Ancora non hai detto "da dove" parti per fare la compattazione
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
mer 27 dic 2006 - 13:11
da dove parto? in che senso?
con jro e un database access 2003 bastava indicare il file da compattare e invocare il metodo compact
cosa intendi di preciso? è cambiato qualcosa^?
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 27 dic 2006 - 13:20
Se ad esempio apri access 2003 come applicazione e vuoi compattare un database 2007 non credo che ci riusciresti.
Quindi se parti da vb6 o vb.net il suggerimento dovrebbe funzionare.
Ovviamente se apri access 2007 come applicazione e durante la compattazione ottieni un errore il problema è tutt'altro.
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
mer 27 dic 2006 - 13:49
ok ok
parto da vb.net
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 27 dic 2006 - 15:48
Ho fatto delle verifiche.
Neanche mettendo la stringa di connessione corretta è possibile compattare, credo sia un bug non ancora corretto.
Magari puoi partire dal mio esempio.
'
' * Created by SharpDevelop.
' * User: Luciano
' * Date: 31/10/2005
' * Time: 10.18
' *
' * To change this template use Tools | Options | Coding | Edit Standard Headers.
'
Imports System
Imports JRO
Namespace CompactDatabaseAccess
Class MainClass
Private Const Connessione As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%1;Persist Security Info=False"
Public Shared Sub Main(ByVal args As String())
'If args.Length = 0 Then
' args = New String(2) {"dbprova.accdb", "dbprova2.accdb"}
'End If
If args.Length <> 2 Then
Console.WriteLine("Numero Parametri Errato")
Return
End If
CompactAccessDataBase(args(0), args(1), (args(0).ToLower().EndsWith("accdb")))
End Sub
Private Shared Sub CompactAccessDataBase(ByVal sourceFileName As String, ByVal destFileName As String, ByVal Access2007 As Boolean)
' Definizione delle stringhe di connessione per db origine e destinazione
Dim sourceConnection As String
Dim destConnection As String
If Not Access2007 Then
sourceConnection = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" + sourceFileName
destConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + destFileName
Else
sourceConnection = GeneraStringaConnessioneAccess2007(sourceFileName, "")
destConnection = GeneraStringaConnessioneAccess2007(destFileName, "")
End If
' creazione dell'oggetto (Microsoft Jet and Replication Object)
Dim je As New JRO.JetEngine()
Try
je.CompactDatabase(sourceConnection, destConnection)
Finally
je = Nothing
End Try
End Sub
''' <summary>
''' Genera la stringa di connessione per access 2007
''' </summary>
''' <param name="NomeDataBase">Nome del database completo di path</param>
''' <param name="Password">Password del database, eventualmente passare String.Empty</param>
''' <returns>La stringa già formattata</returns>
''' <remarks></remarks>
Private Shared Function GeneraStringaConnessioneAccess2007(ByVal NomeDataBase As String, ByVal Password As String) As String
Dim OutValue As String = Connessione.Replace("%1", NomeDataBase)
If Password <> "" Then
OutValue = OutValue + "Jet OLEDB:Database Password=" + Password
End If
Return OutValue
End Function
End Class
End Namespace
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !