Man unterscheidet zwei verschiedene Typen von benutzerdefinierte Datentypen:
a) den Aufzählungstyp
b) den Verbundtyp
Der Grundlegende Gedanke hinter den benutzerdefinierten Datentypen ist, zusammengehörige Informationen nicht in vielen verschiedenen Variablen zu speichern sondern in nur 1 Datentyp. Dies führt zur Vereinfachung und zur Übersichtlichkeit im VBA-Code.
a) Aufzählungstyp:
Der Aufzählungstyp beinhaltet eine Variable mit einem begrenzten abzählbaren Wertebereich. Er wird durch die Enum-Anweisung gebildet. Wir machen gleich mal ein Beispiel damit Sie sehen was ich damit meine. Z.B. möchten Sie in Ihrer Anwendung verschiedene Sicherheitsstufen realisieren um Mitarbeiter z.B. vor verschiedene Gefahrensituationen zu warnen.
Hier ein frei erfundenes Szenario:
Public Enum Securitylevel
normal = 0
leicht erhoeht = 1
erhoeht = 2
Gefahr = 3
akute Gefahr = 4
Evakuierung = 5
End Enum
Nun können Sie im Code auf den Datentyp zugreifen und den Wert verändern:
Dim security As Securitylevel
security = 1
Alternativ: security = Gefahr
Read more »
Analog zum Artikel Regelmäßiger Datenimport realisieren wo es um den Import von Daten aus Excel ging, zeige ich in diesem Artikel auf wie man aus einer Textdatei importiert. Langweilig, kennen wir schon … mögen Sie jetzt denken. Aber lesen Sie weiter, es wird spannender als Sie denken.
Die Situation ist die gleiche wie im ersten Artikel. Sie haben ein Produktiv-Backend das 7×24 Stunden im Einsatz ist. Das bedeutet dass Sie nur bereinigte Daten in das Arbeitsbackend übertragen können. Der Lösungsweg ist der gleiche wie zuvor, der Import geschieht über eine temporäre Datenbank die zum Zwecke des Imports und der Bearbeitung der Daten per Code erstellt danach gelöscht wird.
Details zum Erstellen der temporären Datenbank und Tabelle lesen Sie bitte im ersten Artikel. Der Vereinfachung halber füge ich hier nur die Prozedur ein die Datenbank und Tabelle erstellt.
Function CreateNewDB(dbNam As String, TabName As String) As Database
Dim wrkDefault As DAO.Workspace
Dim dbNeu As DAO.Database
' Standardarbeitsbereich bestimmen.
Set wrkDefault = DBEngine.Workspaces(0)
'wenn Datenbank bereits vorhanden, dann löschen
If Dir(CurrentProject.Path & "\" & dbNam & ".mdb") <> "" Then
Kill CurrentProject.Path & "\" & dbNam & ".mdb"
End If
'neue Datenbank erstellen
Set dbNew = wrkDefault.CreateDatabase(CurrentProject.Path & "\" & _
dbNam & ".mdb", dbLangGeneral, dbEncrypt Or dbVersion40)
'Tabelle erstellen
dbNew.Execute "CREATE TABLE " & TabNam & " (" & Fields & ")"
'Rückgabewert zuweisen
Set CreateNewDB = dbNeu
End Function
Der nächste Schritt ist der Import aus der Textdatei. In meinem Beispiel verwendete ich eine Spaltenorientierte Textdatei mit gleich langen Spalten. Es geht aber auch mit anderen Typen wie z.B. mit einem Separator etc. Der einfachste Weg ist eine Importspezifikation zu erstellen. Wer das nicht kennt hier eine Schnellanleitung dazu:
- Über Datei/Externe Daten/Importieren Dateityp Textfiles auswählen und die entsprechende Textdatei auswählen.
- Ein Klick auf Importieren öffnet einen Assistenten zur Zuordnung der Spalten und der Spalteneigenschaften.
- Man wählt einen der beiden Modis aus, also Trennzeichen oder feste Breite und klickt auf „Weiter“.
- Danach dem Assistenten folgen. Die Eingaben sollten selbsterklärend sein.
- Zum Schluss bevor man „Fertig stellen“ klickt die Schaltfläche „Weitere“ anklicken.
- Ein weiteres Fenster öffnet sich wo man entsprechende Auswahlen treffen sollte.
- Zum Schluss auf „Speichern unter“ klicken, einen Spezifikationsnamen angeben und 2x OK klicken.
- Jetzt sind Sie wieder im ersten Fenster wo Sie den Assistenten mit „Fertig stellen“ beenden.
Read more »