ieg Systems Softwareentwicklung
Access
- Themen

- Downloads
- Links

Namens-
konventionen


Tabellen
Abfragen
Formulare
Makros
Module

Variablen und Konstanten

Access-Namenskonventionen

Autor: Ing. Ernst Greiner


Namenskonventionen sind Regeln
   welche festlegen, wie Objekte, Variablen, Konstanten usw. benannt werden.


Warum Namenskonventionen?
  • Ihre Programme werden lesbarer und übersichtlicher, nicht nur für sie, sondern auch für eine größere Entwicklergemeinde.
  • Der geringe Aufwand, ordentliche Namen zu geben, steht einem großen Nutzen gegenüber.

Speziell in größeren Projekten verliert man ohne vernünftige Benennungen schnell die Übersicht. Access bietet in dieser Hinsicht auch keine anderen architektonischen Möglichkeiten als über Objektnamen die Software zu strukturieren.

Beispiel, gruppieren sie Abfragen nach ihrer Funktionalität/Zugehörigkeit:

Vergeben sie allen Abfragen die als Datenquelle für Unterformulare dienen das Präfix qfsub.
Alle diese Abfragen sind dann im Datenbankfenster zusammenhängend aufgereiht, sie müssen dann nur mehr in dieser Gruppe alphabetisch suchen. So suchen sie anstatt unter 200 Abfragen nur unter 40, dass spart Zeit und Energie.


Wie gehe ich am besten vor?
  • Diese Konventionen sind als Vorschlag gedacht. Wenn sie ihnen nicht gefallen, entwickeln sie ihre eigenen.
  • Erweitern sie Ihre Konventionen nach Bedarf, halten sie sich an ein Grundschema.
  • Keep it simple - erfinden sie keine komplizierten Abkürzungen.
    Sollte es doch notwendig sein, führen sie in einem eigenen Modul (_Description) eine erklärenden Legende ein
    z.B.: fdlstg ... Dienstleistungsformular.
  • Verwenden sie für Bezeichner englische Ausdrücke.
    Englisch verbindet die Nationen der Erde, im Besonderen die Softwerker.

Grundsätzliches
  • Verwenden sie nur Buchstaben, die auch im englischen Alphabet existieren, d. h. keine Umlaute, kein ß.
  • Keine Sonderzeichen, ausgenommen underscore _ und das sparsam.
  • Keine Bindestriche: - diese können als Minus interpretiert werden.
  • Keine Leerzeichen.
  • Keine reservierten Namen, am "beliebtesten" dabei ist Name.
  • Keine Zahlen am Anfang eines Variablen-, Funktionsnamens.

Diese Grundregeln räumen von vornherein einige Fehlerquellen aus.

Sonderzeichen in Namen, dazu gehören Umlaute, ß, Bindestriche usw. führen an bestimmten Stellen der Software zu Komplikationen die nicht sein müssen, deswegen lässt man sie von vornherein weg.


Der Underscore _

Früher wurde der underscore _ exzessiv eingesetzt.
Meiner Meinung nach zerstückelt der underscore einen Objektnamen anstatt ihn zu strukturieren.
Selten ist der underscore wirklich notwendig, verwenden sie stattdessen die Groß-/Kleinschreibung um Objektnamen zu strukturieren, dass liest sich auch flüssiger.

Ich verwende den underscore hauptsächlich dazu, um Testabfragen die anschließend wieder gelöscht werden können ganz am Anfang des Datenbankfensters zu positionieren, das erspart Zeit beim Suchen (_qaddCustomers).
Oder, um übergeordnete Module oder Formulare (_Description, _Todo) wiederum leichter zu finden.


Donts

Feldnamen in Tabellen:
 Straße-Nr
 Straße_Nr
 Straße Nr

Kein Mensch würde auf die Idee kommen eine Variable Straße-Nr zu nennen, der Compiler würde das vermutlich ohnehin nicht zulassen. Es ist hier offensichtlich, dass diese Variable als Straße minus Nr interpretiert wird.
Bei Feldnamen ist diese Unart leider alltäglich.

Does

Es gibt genug bessere Möglichkeiten:
 dtStrasseNr
 dtStrasse
 dtStreetNo
 dtStreet
 StrasseNr
 StreetNo

nach obennach unten

 

Access-Objekte

Code Detail Beschreibung

t

table

Tabellen

q

query

Abfragen

f

form

Formular

r

report

Bericht

m

macro

Makro

v

vba

Modul

c

class

Klassenmodul



Eine grundsätzliche Unterscheidung von Objekten bringt folgenden Vorteil:

  • Tabellen und Abfragen sind eindeutig unterscheidbar.
    Access verarbeitet in einigen Fällen Tabellen und Abfragen als gleichwertig, zum Beispiel bei Datenquellen in Formularen.
  • Ähnliches gilt für Formulare und Berichte.
  • Bei Makros kann dieses System nicht hundertprozentig eingehalten werden, siehe dazu Kapitel Makros.

Allgemein üblich sind: tab, qry, frm, rpt, mac, mod, und cls welche die Lesbarkeit aber nur unwesentlich erhöhen.
Wichtiger ist meiner Meinung nach die Strukturierung innerhalb der einzelnen Objektgruppen, siehe dazu die nächsten Abschnitte.

 

Tabellen

Code Detail Beispiel Beschreibung

tdt

data table

tdtCostumer

Haupttabelle (Kerndaten der Anwendung)

tadd

additional table

taddCostumer

Tabelle zum Speichern von (untergeordneten) Information in einer 1:1 oder 1:n Beziehung zu einer tdt

tlnk

link table

tlnkFilmActor

Tabelle zum Verbinden zweier Tabellen für eine m:n Beziehung

tref

reference table

trefState

Referenztabelle, ablegen von Referenz Infos auf die in anderen Tabellen zugegriffen wird

ttmp

temporary table

ttmpPLZsend

Tabelle wird von Anwendung zum zeitweiligen Zwischenspeichern verwendet. Daten in dieser Tabelle können jederzeit gelöscht werden.

tsys

system table

tsysMenu

Anwendungsspezifische Daten werden hier abgelegt, haben mit den eigentlichen Daten die verwaltet werden nichts zu tun

ttpt

template table

ttptFields

Tabelle dient als Vorlage (z.B. zum erstellen von neuen Tabellen)

timp

import table

timpCostumerExcel

Tabelle zum importieren von Daten in einem Fremdformat

texp

export table

texpCostumerTxt

Tabelle zum exportieren von Daten in ein Fremdformat



Der Vorteil der Strukturierung innerhalb der Objektgruppe ergibt sich einfach daraus, dass bei der Suche nach einem bestimmten Objekt nicht immer der ganze Pool durchsucht werden muss.
Man braucht sich beim Entwickeln nur auf einen bestimmten Abschnitt konzentrieren, was, wie weiter oben schon erwähnt, Zeit und Energie spart.

Dieses Prinzip gilt auch für die folgenden Abschnitte.

 

Tabellen Feldbezeichnungen

Code Detail Beispiel Beschreibung

id

identity

idCostumer

Primärschlüssel (meistens Autowert)

fi

foreign identity

fiCostumer

Fremdschlüssel verweist auf eine id

dt

data

dtName1

normale Daten (d. h. 90% der Feldnamen beginnen mit dt)

dat

date

datInput

Datum

lnk

hyperlink

lnkWWW

Hyperlink ins www oder auf eMail-Adressen, Dokumente ...

mem

memo

memInfo

Memofeld

ole

object linking and embedding

 

OLE Objekte sind problematisch, von einer Verwendung wird abgeraten.

cur

currency

curArticle

Währung

bi

boolean, binary

biPrint

Boolsche, binäre Felder

nach obennach unten

 

Abfragen

Code Detail Beispiel Beschreibung

qadd

add query

qaddCostumer

Anfügeabfrage

qupd

update query

qupdArticleCost

Aktualisierungsabfrage

qdel

delete query

qdelCostumerOld

Löschabfrage

qfdlg

dialog form query

qfdlgCostumer

Datenherkunft für ein Standard Dialogformular

qfsub

subform query

qfsubCostumer

Datenherkunft für ein Unterformular

qflt

filter query

qfltCostumerTyp

Datenherkunft für ein Kombofeld das als Filter für ein Formular eingesetzt wird

qref

reference query

qrefCity

Datenherkunft für Kombofelder in Formularen

qrmn

mainreport query

qrmnArticle

Datenherkunft für einen Standardbericht

qrsub

subreport query

qrsubArticle

Datenherkunft für einen Unterbericht

qsys

system query

qsysMenu

Abfrage die auf Systemtabellen (tsys) zugreift

qv

vba query

 

Abfrage die in Modulen weiterverwendet wird

 

Abfrage Feldbezeichnungen

Grundsätzlich können die gleichen Bezeichnungen wie bei Tabellenfelder verwendet werden.

Code Detail Beispiel Beschreibung

cpt

compute

cptName

Berechnete Felder ([dtNachname] + [Vorname] + ...)

nach obennach unten

 

Formulare

Code Detail Beispiel Beschreibung

fmnu

menu form

fmnuMain

Menüs zum navigieren in der Anwendung

fdlg

dialog form

fdlgCostumer

Normales Dialogformular zum editieren von Daten

fsub

subform

fsubCostumer

Unterformular

fshw

show form

fshwCostumerOld

sehr einfaches Formular in Datenblattansicht

fnew

new data form

fnewCostumer

Dateneingabeformular

frpt

report form

frptCostumer

Formular zum filtern und ausdrucken von Daten

fsys

system form

fsysMenu

Formular zum editieren von Systemdaten

 

Formular Elemente

Grundsätzlich können die gleichen Bezeichnungen wie bei Tabellen-/Abfragefelder verwendet werden.

Code Detail Beispiel Beschreibung

lbl

label

lblInfo

nur Bezeichnungsfelder die gesondert bezeichnet werden sollten, ansonsten kann man den vom System vorgeschlagenen Namen verwenden

flt

filter

fltCostumerTyp

Eingabefelder die Daten filtern

fsub, rsub

subform, -report

fsubCostumer

Unterformular/-bericht Steuerelemente, einfach so benennen wie das Formular/Bericht selbst

lnk

link

lnkidCostumer

Felder die die Verbindung zwischen Unterformularen herstellen

opt

option

optType

Optionsgruppe

btn

button

btnClose

Befehlsschaltfläche

tgl

toggle button

tglView

Umschaltfeld

reg

register

regDataSrc

Registersteuerelement

nach obennach unten

 

Makros

Auf Makros sollte man besser verzichten:
  • Makros erlauben keine Fehlerbehandlung
  • Makros können nicht debuggt werden
  • Makros sind unflexibel und unübersichtlich
  • Makros sind in MDE-Dateien ungeschützt

Wenige Gründe sprechen für den Einsatz von Makros:
  • Das 'AUTOEXEC' Makro: dieses Makro wird ausgeführt wenn sie eine Datenbank öffnen. Die einzige Aktion die sie in diesem Makro aufrufen sollten, ist das Starten einer VBA-Funktion.
  • Das 'AUTOKEYS' (oder 'Tastaturbelegung') Makro überprüft, ob Tasten gedrückt wurden, auf die dann reagiert werden kann.
    Folgende Tasten werden überwacht:
    • Die Funktionstasten F1 bis F12 (+STRG + SHIFT)
    • Alle alphanumerischen Tasten (+STRG)
    • Einfügen und Entfernen-Taste (+STRG + SHIFT)
  • Makros können einfach in VBA-Code umgeformt werden. Für Neulinge ist das ein möglicher Einstiegspunkt in die VBA-Welt.

 

Module

Code Detail Beispiel Beschreibung

v

vba module

vSystem

Standard Modul

lv

vba module library

lvSystem

Standard Modul in einer Bibliotheksdatei

c

class module

cHoverBtn

Klassenmodul

lc

class module library

lcHoverBtn

Klassenmodul in einer Bibliotheksdatei

 

Variablen und Konstanten

Grundsätzlich sollte man Variablen und Konstanten auf einen Blick voneinander unterscheiden können.
Der Grund ist einfach, einer Variablen können sie ständig neue Werte zuweisen, Konstanten weisen sie nur einmal einen Wert zu.

Allgemein wird empfohlen Konstanten groß und Variablen klein zu schreiben.
Um das Programm lesbarer zu gestalten empfiehlt sich Konstanten mit einem großgeschriebenen Teil zu beginnen und Variablen zumindest mit einem kleingeschriebenen Buchstaben zu beginnen.

Beispiel:

Option Compare Database
Option Explicit

Private Const FRMtitle = "Assistenten Fahrtkosten"
Private Const FRMcaption = "Auswahl:"
Private Const FRMpicture = "ressourc.gif"

Private Const RPTsql As String = "qrmnAssiDrive"
Private Const RPTname As String = "rmnAssiDrive"
Private mDateTyp As String



nach obennach unten
Suchen
Google

Links
Newsgroups
  © 1999-2010, ieg-tools.net - Ing. Ernst Greiner Softwareentwicklung Aikido in Linz