HINWEIS
HINWEIS
WWW
Kapitel 11: Dateien und Verzeichnisse
Abbildung 11.24 Beispiel für Anzeige eines Verzeichnisbaums im TreeView
Um den Code nicht aufzublähen. haben wir die Programmierung vereinfacht, d.h., es wird erst der
komplette Verzeichnisbaum ermittelt, bevor die Anzeige erfolgt. Der Nachteil:
Bis die Anzeige des kompletten Verzeichnisbaums erscheint, kann durchaus einige Zeit vergehen (bis zu einer
Minute bei einem gut gefüllten Laufwerk)!
Ein Datenbank-Backup mit CD/DVD-Brenner realisieren
Nero-API; COM-Programmierung; WithEvents;
Dieses Beispiel funktioniert nur dann, wenn Sie die Brenner-Software Nero auf Ihrem PC installiert haben!
Neben den mittlerweile immer beliebter werdenden USB-Sticks bleiben CDs/DVDs nach wie vor gebräuch-
liche Backup-Medien. Doch wie steuern Sie auf die Schnelle einen CD-Brenner von Access aus an?
Die Lösung findet sich wahrscheinlich bereits auf Ihrer Festplatte. Zu fast jedem CD-Brenner wird auch
Ahead Nero mitgeliefert, eine der umfangreichsten Applikationen rund um das Erstellen von CDs/DVDs.
Im Gegensatz zu den Anwenungen der Mitbewerber bringt Nero auch ein gut dokumentiertes API bzw.
eine für den VBA-Programmierer wesentlich interessantere COM-Schnittstelle mit.
Unter der folgenden Adresse können Sie das Nero-SDK frei herunterladen (Hilfen, Beispiele):
http://www.nero.com/nero7/deu/SDK_API.html
Ein kleines Beispielprogramm soll Ihnen einen ersten Einstieg in die Programmierung mit den Nero-COM-
Objekten ermöglichen. Ziel ist das Erstellen eines Datenbank-Backups, bei dem alle Tabellen der aktuellen
Datenbank auf einer CD gesichert werden.
742
Oberfläche
Entwerfen Sie zunächst eine Oberfläche entsprechend der folgenden Laufzeitansicht:
Abbildung 11.25 Laufzeitansicht
Im Einzelnen handelt es sich um zwei Listenfelder (Anzeige der verfügbaren Brenner, Ausgabe von Status-
meldungen) und ein Textfeld.
Quelltext
Binden Sie zunächst einen Verweis auf die Nero Type Library ein
1
:
Abbildung 11.26 Verweis einbinden
Damit können wir uns dem eigentlichen Quellcode zuwenden.
1
Dies setzt eine ordnungsgemäße Nero-Installation voraus.
743
Praxisbeispiele
HINWEIS
Kapitel 11: Dateien und Verzeichnisse
Option Explicit
Zunächst benötigen wir ein zentrales Objekt vom Typ
Nero
, das auch wichtige Ereignisse bereitstellt
1
:
Private WithEvents oNero As Nero
Eine Liste der verfügbaren Brenner:
Private oNDrives As NeroDrives
Der später ausgewählte Brenner:
Private WithEvents oNDrive As NeroDrive
Eine zentrale Möglichkeit, Aktionen abzubrechen:
Dim bAbbruch As Boolean
Zunächst eine Hilfsfunktion, die alle Tabellen unserer aktuelle Datenbank in eine neue Datei kopiert (die
eigentliche Backupdatei):
Sub ErstelleKopie()
Dim td As DAO.TableDef
Kill "c:\MeineBackupDatei.mdb"
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).CreateDatabase("c:\MeineBackupDatei.mdb", dbLangGeneral, _
dbEncrypt + dbVersion30)
db.Close
For Each td In CurrentDb.TableDefs
If (td.Attributes And &H80000002) = 0 Then _
DoCmd.CopyObject "c:\MeineBackupDatei.mdb", td.name, acTable, td.name
Next
End Sub
Mit dem Öffnen des Formulars ermitteln wir zunächst, welche Brenner vorhanden sind:
Private Sub Form_Load()
Dim oDrive As NeroDrive
bAbbruch = False
Set oNero = New Nero
Set oNDrives = oNero.GetDrives(NERO_MEDIA_CD)
Diese werden in das obere Listenfeld eingefügt, der Nutzer kann später den gewünschten Brenner auswählen:
For Each oDrive In oNDrives
Liste1.AddItem oDrive.DriveLetter & ": [" & oDrive.DeviceName & "]"
Next
Liste1.Selected(0) = True
End Sub
Neben dem eigentlichen Brenner wird auch noch ein ImageRecorder angezeigt, der für das Erstellen von ISO-
Dateien verwendet werden kann.
1
Viele Methoden werden asynchron abgearbeitet, Feedback erhalten Sie nur per Event.
744
Mit dem Klick auf die Schaltfläche »... brennen« setzen die hektischen Aktivitäten ein:
Private Sub Befehl2_Click()
Dim isotrack As NeroISOTrack
Dim Folder As NeroFolder
Dim file As NeroFile
Nutzerauswahl des Brenners auswerten und das zugehörige
NeroDrive-
Objekt abrufen:
Set oNDrive = oNDrives(Liste1.ListIndex)
Text1.Value = ""
Backupdatei auf der Festplatte erzeugen:
ErstelleKopie
In den folgenden Schritten wird die CD-Struktur erzeugt.
Zunächst einen neuen Track erzeugen:
Set isotrack = New NeroISOTrack
isotrack.name = "Backup"
Dem Track werden Verzeichnisse zugeordnet (wir belassen es bei der Root):
Set Folder = New NeroFolder
isotrack.RootFolder = Folder
Zum Schluss müssen noch die eigentlichen Dateien ausgewählt und dem Verzeichnis zugeordnet werden:
Set file = New NeroFile
Folder.Files.Add file
Der Name auf der CD:
file.name = "Backup.accdb"
Die zu kopierende Datei mit Pfadangabe:
file.SourceFilePath = "c:\MeineBackupDatei.accdb"
Die Brenn-Optionen für den Track festlegen:
isotrack.BurnOptions = NERO_BURN_OPTION_CREATE_ISO_FS + NERO_BURN_OPTION_USE_JOLIET
Wenn Buffer-Underrun-Schutz durch den Brenner unterstützt wird:
If oNDrive.Capabilities And NERO_CAP_BUF_UNDERRUN_PROT Then
Asynchroner Start für den Brennvorgang:
oNDrive.BurnIsoAudioCD "", "Backup", 0, isotrack, Nothing, Nothing, NERO_BURN_FLAG_WRITE + _
NERO_BURN_FLAG_BUF_UNDERRUN_PROT + NERO_BURN_FLAG_CLOSE_SESSION, 0, _
NERO_MEDIA_CDR + NERO_MEDIA_CDRW + NERO_MEDIA_DVD_M_R + _
NERO_MEDIA_DVD_M_RW + NERO_MEDIA_DVD_P_R + NERO_MEDIA_DVD_P_R9 + _
NERO_MEDIA_DVD_P_RW
Else
745
Praxisbeispiele

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.