BCD-Code erleichtert die Auswahl von Entitäten

By , 15. April 2012

BCD-Code ist vielen sicherlich noch von früher aus dem Informatikuntericht bekannt. Ich kam damit das erste mal während meiner Ausbildung duch BCD-Codierschalter in Berührung. Beim BCD-Code wird jede Ziffer einer Dezimalzahl einzeln dualkodiert. BCD-Code wird auch 8-4-2-1 Code genannt, weil die zweierpotenzen diese Ziffern ergeben. Damit lässt sich jede Ganzzahl darstellen.

Beispiel: 14: 8+4+2 oder 22: 16+4+2 usw.

Wie nützt uns jetzt dies bei Access? Der Aufbau des Codes hat auch einen zusätzlichen Effekt. Und zwar ist jede Zahl im Code (1, 2, 4, 8, 16….) größer als die Summe aller darunter liegender Zahlen, und zwar immer genau um 1 größer. Beispiel: 64 > 32+16+8+4+2+1.

Wenn man jetzt einen Enum Definiert dann nicht mehr mit 1, 2, 3…. sondern mit 1, 2, 4…

Ich glaub ich mach jetzt am besten erst mal ein Beispiel:

Option Explicit

Private Enum eAuswahl
    vbArbeiter = 1
    vbAngestellte = 2
    vbTechniker = 4
    vbführungskräfte = 8
    vbBerater = 16
    vbAlle = 32
End Enum

Read more »

Kodieren und Dekodieren von Texten

By , 8. April 2012

Kürzlich bin ich auf eine relativ alte Methode wieder gestoßen um Texte zu kodieren. Dabei verschiebt man einfach die Buchstaben im Wort um eine definierte Anzahl stellen. Ein bekannter Vertreter dieser Art ist Rot13. (Rotate by 13). Solche Kodierer haben den Vorteil dass sie erstens wieder dekodiert werden können – was gleichzeitig aber auch ihr Nachteil in Bezug auf Sicherheit ist – und zweitens dass es bekannte Algorithmen in verschiedenen Programmiersprachen gibt. Teilweise findet man auch im internet Online-Tools die Texte kodieren bzw. dekodieren können.
Dies sollte man wissen wenn man Text-Daten in einer Tabelle verschlüsseln möchte. Jeder der die Kodierungsmethode herausfindet kann es auch wieder lesbar machen.

Um hier ein wenig Sicherheit hineinzubringen sollte man den Kodier-Algorithmus nach eigenen Vorgaben anpassen. Über Ostern hatte ich wohl ein bisschen Zeit, und hab da mal etwas gebastel.
Meine Idee war kein fester Verschiebefaktor vorzugeben, sondern in Ahhängigkeit der Stelle eines Buchstabens im Wort vergrößerten Faktur. Also der erste Buchstabe um z.B. 15 verschieben, den zweiten um 15 usw., und beim nächsten Wort wieder bei 15 anfangen. Ich nenne diesen Algorithmus mal Rot15plus.
Read more »

Rückruffunktionen (Callback Functions) in Access anwenden

By , 6. April 2012

Hallo liebe Leser,
beim Schmökern in diversen Foren bin ich auf Rückruffunktionen gestoßen, die ich bislang selbst nicht einsetzte. Eine Rückruffunktion ist eine Funktion, die als Parameter einer anderen Prozedur übergeben wird. Die Rückruffunktion selbst kann auch eigene Parameter haben die auch übergeben werden. Dadurch kann man eine allgemeine Prozedur erstellen, deren Verhalten erst durch die übergebene Rückruffunktion bestimmt wird. Das Verhalten dieser allgemeinen Prozedur kann sich mit jedem Aufruf ändern.

Dadurch kann man eine Access-Anwendung erstellen, mit einer Art Programm-Schnittstelle – bei PHP Entwicklern auch als Hook bekannt – die später hinzugefügte Module nutzen können, um eigene Funktionen auszuführen. Dies bedeutet aber auch, dass eine vom Entwickler ungewollte Prozedur ausgeführt werden könnte die auch Schadcode enthalten kann. Man sollte den Einsatz nachfolgend vorgestellter Methode also genau planen.

Da beim Übergeben von Parametern Access nicht den Datentyp „Funktion“ kennt, muss man da ein wenig tricksen. Statt dessen übergibt man den Funktionsname als String und den/die erforderlichen Parameter. Wie genau das geht zeigt nachfolgender Code.

Erstellen Sie zu erst ein Standardmodul. Beginnen wir anschließend mit der „neutralen“ Prozedur.

Function apply_to(ByVal funktion As String, ByVal werte As Variant) AS Variant
    Dim ergebnis() As Variant
    Dim i As Long
    Dim e As Variant
    For i = LBound(werte) To UBound(werte)          'Schleife über alle Werte
        e = Eval(funktion & "(" & werte(i) & ")")   'rufe die Rückruffunktion mit Parameter auf
        ReDim Preserve ergebnis(i)                  'Wertebereich des Rückgabearrays erweitern
        ergebnis(i) = e                             'und hänge den Rückgabewert an das Array an.
    Next i
    apply_to = ergebnis
End Function

Read more »

OfficeFolders theme by Themocracy