Je bent hier: ITFAQ.nl » Hoe kan ik? » Online een Access 2003 database converteren naar 2007 en hoger

Online een Access 2003 database converteren naar 2007 en hoger

Een Access MDB-database converteren naar de ACCDB-bestandsindeling

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.

En dat converteren van Jet-versie naar de ACCDB-bestandsindeling kan met een klein 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 %>

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 %>

Geef een reactie

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