Kleine Code-Helferlein
Hallo,
heute möchte ich euch ein paar nützliche Code-Listings vorstellen, die mir bestimmte Arbeiten erleichtern.
Zum ersten ist es eine Prozedur, die mir geöffnete Objekte – Formulare oder Berichte – schließt ohne dass ich jedesmal „DoCmd.close acForm, Me.Name“ schreiben muss. Entwickler sind auch nur faule Menschen 🙂
Statt dessen schreibe ich der Einfachheit halber nur:
hide Me
Die Prozedur dazu in einem Modul sieht so aus:
Public Sub hide(ByRef obj As Object) If obj.Application.Forms.Count > 0 Then DoCmd.Close acForm, obj.Name Else DoCmd.Close acReport, obj.Name End If End Sub
Das zweite Helferlein betrifft Dialog-Formulare die ich in diesem Zusammenhang dazu verwende um mir vom Anwender ein OK für irgendwas zu holen, sei es um was zu löschen oder sonst irgendwas. Die Function incl. der Deklaration einer globalen Variable in einem Modul sieht dazu wie folgt aus:
Global selectedOK As Boolean Public Function CheckOK(ByVal cFormName As String, Optional ByVal vValue As Variant) As Boolean DoCmd.OpenForm cFormName, , , , , acDialog, vValue If selectedOK Then selectedOK = False CheckOK = True End If End Function
Im aufgerufenen Formular kann ich dann im Form_Load-Ereignis Me.OpenArgs auswerten um z.B. einen bestimmten Text anzuzeigen o.Ä. In obiger Function wird in der If-Abfrage die globale Variable sofort wieder zurückgesetzt, so dass ich mir keine Gedanken machen muss um deren Status. Daher verwende ich auch den Rückgabewert dieser Function zur weiteren Code-Steuerung, und nicht die globale Variable irgendwo in einem Formular, weil eben nur hier ein nur einem einzigen Ort die Globale Variable zurückgesetzt wird.
Bei Klick auf einen Löschen-Button oder OK-Button in dem Dialog-Formular schreibe ich im entsprechenden Click-Ereignis dann nur folgendes:
Private Sub cmdDelete_Click() selectedOK = True hide Me End Sub
Der dritte Tipp betrifft ein bestimmtes Sonderzeichen, welches beim Verwenden zu unerwünschten Ergebnissen führen kann. Hast du schon mal versucht folgenden Text in ein Bezeichnungsfeld über die Caption-Eigenschaft zu schreiben:
Me.Bezeichnungsfeld1.Caption = "Meier GmbH & Co. KG"
Man wird schnell feststellen dass Access das &-Zeichen anderst interpretiert. Die Lösung ist schlichtweg das &-Zeichen zu verdoppeln. Doch was wenn man statt mit Texten mit Variablen arbeitet? Jedesmal die Replace()-Funktion bemühen? Das war mir zu umständlich, so ist es zu folgendem Mini-Codelisting gekommen:
Public Function doubleAND(ByVal cValue As String) As String doubleAND = Replace(cValue, "&", "&&") End Function
Jetzt kann ich ganz einfach wie folgt das schreiben:
Me.Bezeichnungsfeld1.Caption = doubleAND(Firmenname)
Das soll es jetzt fürs erste gewesen sein.
Bis dahin
©2020 Andreas Vogt