Je bent hier: ITFAQ.nl » Blog » Webdevelopment » Online een Access 2003 database converteren naar 2007 en hoger

Online een Access 2003 database converteren naar 2007 en hoger

Ja, het is 2019, maar online kom je nog heel veel oude Access-databases, zoals Access 2000, Access 2002 en Access 2003. Allen met een .mdb-extensie. Nieuwere versies van Access gebruiken een andere bestandsextensie: .accdb. Hoe converteer je online Access 2003 naar 2007+? Lees verder!

Voordat we verder gaan moet je de scope van dit artikel even begrijpen. De Microsoft Jet Database Engine is de database-engine achter Access, om het versimpeld te zeggen. Wat je wilt is Jet OLEDB:Engine Type=5 updaten naar Jet OLEDB:Engine Type=6, dus niet zo zeer Access 2003 naar bijvoorbeeld Access 2010.

Daarom wil je de bestandsindeling van Access omzetten, of zogezegd:

Een Access MDB-database converteren naar de ACCDB-bestandsindeling

En dat converteren van Jet-versie naar de ACCDB-bestandsindeling kan met een klein classic ASP-script. Een voorwaarde is dat minimaal de driver Microsoft Access database engine 2007 is geïnstalleerd in de webserver IIS, maar bij voorkeur een nieuwere zoals Microsoft Access Database Engine 2010 Redistributable of Microsoft Access Database Engine 2016 Redistributable.

<%
Dim objFSO
Dim objEngine
Dim strLckFile
Dim strSrcName
Dim strDstName
Dim strBackup
strLckFile	= "D:\www\pad\naar\database\db.ldb"
strSrcName	= "D:\www\pad\naar\database\db.mdb"
strDstName	= "D:\www\pad\naar\database\db.accdb"
strBackup	= "D:\www\pad\naar\database\db_backup.accdb"
Set objEngine = CreateObject("DAO.DBEngine.120")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FileExists(strLckFile)) Then
	If (objFSO.FileExists(strBackup)) Then
		objFSO.DeleteFile strBackup
	End If
	If (objFSO.FileExists(strDstName)) Then
		objFSO.DeleteFile strDstName
	End If
	objFSO.CopyFile strSrcName, strBackup
	' dbVersion120 = 128
	objEngine.CompactDatabase strSrcName, strDstName, , 128
End If
%>Code language: HTML, XML (xml)

Bron: @HansUp op Stack Overflow.

Verander de vier variabelen strLckFile, strSrcName, strDstName en strBackup. Merk hierbij op dat strSrcName het bronbestand is en strDstName het doelbestand (de nieuwe database). Sla dan het bestand op als bijvoorbeeld convert.asp, en upload het naar jouw website.

Als je hierna je het script uitvoert in de browser, dan zul je zien dat db.accdb een nieuw bestand is, gemaakt met db.mdb Access database als invoer. Ook is de bestandsgrootte van het .accdb Office Access-bestand iets groter.

Beschik je over Microsoft Office Access dan kun je de oude database openen en en kiezen voor opslaan als.

Office Access versieVersienummerJet versie
Access 200210.04.0 SP1
Access 200311.04.0 SP1
Access 200712.0ACE 12
Access 201014.0ACE 14
Access 201315.0ACE 14
Access 201616.0ACE 16
Access 201917.0

Gebruik je écht nog Access databases op jouw website? Get real en converteer ze om naar Microsoft SQL Server of minstens MySQL.

Access-database online comprimeren met ASP

Je kunt met classic ASP een Access-database ook comprimeren, of verkleinen. Hierdoor presteert de database en ASP beter. Gebruik hiervoor de volgende code:

<%
' Dit ASP script verkleint (compact) een Access 
' database. Hierna redirect het script naar een op te geven 
' pagina, bijvoorbeeld als onderdeel van een CMS.
'
' Wijzig "example.com" in je eigen inlognaam en de database
' naam "database.mdb" naar de naam van de database.

Dim LoginNaam, DatabaseNaam, strKlaarURL
Dim strDataBaseFile, strTempFile, strBackupFile
Dim fso, dbEngine, dbVersie, SourceFile, DuplicateFile, CompactedFile

' Uw loginnaam
LoginNaam = "example.com"
DatabaseNaam = "database.mdb"	' of database.accdb

' Database versie (gebruik enkel "2007" of "2003" als string)
dbVersie = "2007"

' Bron database bestand
strDataBaseFile = "z:\Sites\www\" & LoginNaam & "\database\" & DatabaseNaam

' Compacted database bestand
strTempFile = "z:\Sites\www\" & LoginNaam & "\database\tmp_" & DatabaseNaam

' Eventueel Backup bestandsnaam
' voorzie de juiste regel van een comment-teken!

' de bestandsnaam of url van de pagina waarnaar
' het script moet doorverwijzen zodra het klaar is.
strKlaarURL = "default.asp"

' Onder deze regel hoeft je niets aan te passen, tenzij
' je het maken van een backup wilt uitschakelen
' ---------------------------------------------------------------------
'
' I know, that I have to use
' 
' CreateObject("DAO.DBEngine.120") to access an accdb file and
' CreateObject("DAO.DBEngine.36") for mdb files
'
Dim Jet_Conn_Partial
If dbVersie = "2007" Then
	Jet_Conn_Partial = "Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Engine Type=6;Data source="
	Set dbEngine = CreateObject("DAO.DBEngine.120")
	strBackupFile = Replace(strDataBaseFile, "accdb","addbBAK")
Else
	Jet_Conn_Partialold = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
	Set dbEngine = Server.CreateObject("JRO.JetEngine")
	strBackupFile = Replace(strDataBaseFile, "mdb","BAK")
End If
Set fso = CreateObject("Scripting.FileSystemObject")

If (fso.FileExists(strDataBaseFile)) Then
	Set SourceFile = fso.GetFile(strDataBaseFile)

	If (fso.FileExists(strTempFile)) Then
		Set DuplicateFile = fso.GetFile(strTempFile)
		DuplicateFile.Delete

		' Eventuele melding
		Response.Write "Bestaande tempfile is verwijderd!"
	End If

	'Eventueel Backup maken
	SourceFile.Copy strBackupFile

        If dbVersie = "2007" Then
                dbEngine.CompactDatabase strDataBaseFile, strTempFile
        Else
                dbEngine.CompactDatabase Jet_Conn_Partial & strDataBaseFile, Jet_Conn_Partial & strTempFile
        End If

	SourceFile.Delete
	Set CompactedFile = fso.GetFile(strTempFile)
	CompactedFile.Copy strDataBaseFile
	CompactedFile.Delete

	' het script verwijst door naar de volgende pagina zodra het klaar is met
	' het compacten van de database.
	' Response.Redirect strKlaarURL

	' of, geef een tekstuele bevestiging (comment de Response.Redirect regel hierboven)
	Response.Write strDataBaseFile & " verkleind."

	Set CompactedFile = Nothing
	Set SourceFile = Nothing

Else
       	Response.Write "<b>" & strDataBaseFile & "</b> - Het bestand is niet gevonden!"
End If

Set fso = Nothing
Set dbEngine = Nothing
%>Code language: PHP (php)

Doneer €5, 10 of 15 via Paypal. Dank je <3 ❤️

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Scroll naar boven