Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie neue Versionsnummern ermitteln, .mde-Datenbanken prüfen, Text in die Zwischenablage kopieren und mehr.

Techniken

Diverse

Voraussetzungen

Access 2000 und höher

Beispieldateien

TippsUndTricks_Funktionen.mdb

Shortlink

www.access-im-unternehmen.de/802

VBA-Funktionen für Entwickler

André Minhorst, Duisburg

In dieser Ausgabe unserer Tipps-und-Tricks-Reihe stellen wir Ihnen einige Funktionen vor, die Sie speziell als Entwickler einsetzen können. Sie erfahren beispielsweise, wie Sie neue Versionsnummern ermitteln, eine Versionsnummer auf Gültigkeit prüfen und verschiedene Versionsstände vergleichen, ob eine Datenbank eine .mde/.accde-Datei ist, wie Sie Texte per Code in die Zwischenablage kopieren oder wie Sie Zeichenketten für den Einsatz in URLs vorbereiten.

Versionen fortschreiben

Angenommen, Sie möchten Ihrer Anwendung auf Knopfdruck eine neue Versionsnummer verpassen - beispielsweise, indem Sie diese in das Feld Version einer Optionentabelle schreiben.

Ausgehend davon, dass Sie eine aus vier Elementen bestehende Versionsnummer verwenden (zum Beispiel 1.0.0.7), müssen Sie zunächst festlegen, welche Stelle der Versionsnummer geändert werden soll.

Bei der letzten Stelle ist dies kein Problem: Die wird einfach hochgezählt (etwa von 1.0.0.7 auf 1.0.0.8). Bei allen anderen Stellen ist sind jedoch auch noch die folgenden Stellen auf 0 einzustellen, zum Beispiel von 1.0.0.8 auf 1.0.1.0, von 1.0.1.9 auf 1.1.0.0 oder auch von 1.2.3.4 auf 2.0.0.0.

Die Funktion aus Listing 1 erledigt dies, indem sie einfach die Position der zu ändernden Stelle abfragt und als Ergebnis die neue Versionsnummer zurückliefert.

Listing 1: Neue Versionsnummer ermitteln

Public Function NeueVersion(strVersion) As String

    Dim strVersionsstufen() As String

    Dim intVersionsebene As Integer

    intVersionsebene = InputBox("Aktuelle Versionsnummer: " & strVersion & vbCrLf _

        & "Welche Stelle erhöhen?", "Neue Version", 4)

    strVersionsstufen() = Split(strVersion, ".")

    Select Case intVersionsebene

        Case 1

            strVersionsstufen(0) = strVersionsstufen(0) + 1

            strVersionsstufen(1) = 0

            strVersionsstufen(2) = 0

            strVersionsstufen(3) = 0

        Case 2

            strVersionsstufen(1) = strVersionsstufen(1) + 1

            strVersionsstufen(2) = 0

            strVersionsstufen(3) = 0

        Case 3

            strVersionsstufen(2) = strVersionsstufen(2) + 1

            strVersionsstufen(3) = 0

        Case 4

            strVersionsstufen(3) = strVersionsstufen(3) + 1

    End Select

    strVersion = Join(strVersionsstufen(), ".")

    NeueVersion = strVersion

End Function

Die Funktion erwartet als Parameter die aktuelle Versionsnummer in der Form x.x.x.x. Sie fragt als Erstes mit einer Inputbox die Stelle ab, die erhöht werden soll. Die Inputbox erwartet einen Wert zwischen 1 und 4.

Die einzelnen Ebenen der Versionsnummer werden dann mit der Funktion Split in die Felder des Arrays intVersionsstufen geschrieben. Die folgende Select Case-Bedingung verzweigt entsprechend der zu ändernden Ebene der Versionsnummer.

Die zur jeweiligen Ebene gehörende Zahl wird um eins erhöht, die danach folgenden Ebenen auf 0 eingestellt. Die Join-Anweisung fügt die neuen Versionsstufen wieder zu einer vollständigen Versionsnummer zusammen.

Die Funktion finden Sie im Modul mdlVersionsnummern der Beispieldatenbank.

Versionsstände vergleichen

Wenn Sie mit Versionsständen arbeiten, möchten Sie vielleicht auch einmal zwei Versionsstände vergleichen.

Wenn man sich darauf einigt, zumindest für die hinteren drei Zahlen, also Hauptversionsnummer, Nebenversionsnummer, Revisionsnummer und Buildnummer (also etwa 1.0.3.8), nur einstellige Zahlen zu verwenden, könnte man einfach die Trennzeichen (wie den Punkt) weglassen und die resultierenden Zahlenwerte vergleichen.

In der Regel gibt es aber auch Versionsstände wie 2.1.13.1048, und dort greift diese Vorgehensweise nicht mehr.

Also benötigen wir eine etwas ausgefeiltere Funktion, um zu prüfen, ob ein Versionsstand neuer als ein anderer ist. Diese Prüfung erledigt die Funktion IstVersionAktueller aus Listing 2.

Listing 2: Prüfen, ob eine Versionsnummer aktueller als die andere ist

Public Function IstVersionAktueller(strVersionNeu As String, strVersionAlt As String) As Boolean

    Dim strVersionsstufenNeu() As String

    Dim strVersionsstufenAlt() As String

    Dim intNeu As Integer

    Dim intAlt As Integer

    Dim intVersionsebene As Integer

    If Not VersionsnummerGueltig(strVersionNeu) Then

        MsgBox "Die Versionsnummer '" & strVersionNeu & "' ist ungültig."

        Exit Function

    End If

    If Not VersionsnummerGueltig(strVersionAlt) Then

        MsgBox "Die Versionsnummer '" & strVersionAlt & "' ist ungültig."

        Exit Function

    End If

    strVersionsstufenNeu = Split(strVersionNeu, ".")

    strVersionsstufenAlt = Split(strVersionAlt, ".")

    For intVersionsebene = 0 To 3

        intNeu = CInt(strVersionsstufenNeu(intVersionsebene))

        intAlt = CInt(strVersionsstufenAlt(intVersionsebene))

        Select Case intNeu

            Case Is > intAlt

                IstVersionAktueller = True

                Exit Function

            Case Is < intAlt

                Exit Function

        End Select

    Next intVersionsebene

End Function

Die Funktion erwartet die Angabe zweier Versionsstände, wobei der erste der aktuellere sein soll. Kann die Funktion dies bestätigen, liefert sie den Wert True zurück, sonst False.

Für die Prüfung werden die beiden Versionsstände zunächst mit der Funktion VersionsnummerGueltig auf ihr Format geprüft (siehe weiter unten).

Die Versionsnummern sollten aus vier durch Punkte getrennten Elementen bestehen (x.x.x.x).

Haben die beiden Versionsnummern das erwartete Format, werden die einzelnen Elemente beider Versionsnummern in die Arrays strVersionsstufenNeu() und strVersionsstufenAlt() aufgeteilt. Die Funktion vergleicht dann vom jeweils ersten Element ausgehend alle Elemente.

Dazu konvertiert sie den neuen und den alten Wert zunächst in die beiden Variablen intNeu und intAlt.

Eine Select Case-Bedingung prüft dann zwei Fälle:

  • Ist intNeu größer als intAlt? Dann ist die als neue Version angegebene Versionsnummer tatsächlich die aktuellere.
  • Ist intNeu kleiner als intAlt? Dann ist die als ältere Version angegebene Versionsnummer die aktuellere.

In beiden Fällen wird die Funktion beendet, einmal mit dem Rückgabewert True und einmal mit False. Sind beide Versionsnummern gleich, werden die Werte der jeweils nächsten Ebene der Versionsnummern verglichen.

Sollte bis zum letzten Element keine Entscheidung gefallen sein, sind beide Versionsnummern gleich - das bedeutet, dass die Funktion ebenfalls den Wert False zurückgeben muss.

Die Funktion finden Sie ebenfalls im Modul mdlVersionsnummern der Beispieldatenbank.

Versionsnummern prüfen

Wenn Sie Versionsnummern vergleichen möchten, sollten Sie zuvor prüfen, ob diese auch gültig sind.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.