Tips & Tricks

1. Formular-Hilfen

1.1. Bei der Aktion 'Beim Öffnen' eines Formulars kann nur dann auf die Felder des zu öffnenden Formulars zugegriffen werden, wenn man ACCESS vorher mit Me.Repaint mitteilt, daß das Formular erst geladen wird bevor weiterer Code ausgeführt wird.

1.2. Wird SQL-Code in VBA generiert (mittels Dim Abfrage as QueryDef und anschließendem setzen der Variable auf z.B. Set Abfrage = datenbank.QueryDefs("Name der Abfrage"), wobei datenbank der Name der Datenbank ist; s. dazu Öffnen einer Tabelle) so ist bei Datumsangaben entgegen der Hilfe von MS ACCESS das amerikanische Datumsformat mmddyy zu verwenden!

Beispiel: Dim datum_test 'Variable als Text oder Variant nicht jedoch als Datum definieren!

datum_test = "12/31/00"

Abfrage.SQL = "SELECT [Feld1], [Feld2], ... FROM [Name der Abfrage] WHERE (((Feld1) Between #" & datum_test & "# And #" & datum_test & "#));"

Anmerkungen: Variablen vom Typ Datum werden immer in der Form ddmmyy eingegeben. Daher ist beim arbeiten mit Datumsvariablen in einer SQL der Monat mit dem Tag zu vertauschen. Außerdem muß der SQL-Code nicht von Hand generiert werden; erzeugen Sie ganz einfach eine Abfrage die Ihren Erfordernissen entsprechen und wechseln Sie in die SQL-Ansicht. Dieser Code kann direkt in VBA übernommen werden und Sie brauchen nur noch Ihre Bedingungen anzupassen. Die Variablenübergabe vom Typ Datum erfolgt so: datum_test = #dd/mm/yy#

 

2. Makro-Hilfen

Werden in einem Makro Aktionsargumente benötigt die sich auf Felder im Formular beziehen so genügt der Name des Feldes. Der vollständige Bezeichner wie z.B. Formulare!Artikel![Artikel-Nr] wäre hier verkehrt.

 

3. VBA-Hilfen

3.1 Schleifen:

If...Then[...Else/...ElseIf]...End If

Select Case Variable...Case...[Case..[...Case[....]]] End Select

For...To...[Step 2]...Next

Do While i<Wert....Loop oder Do ... Loop While i<Wert

Do Until i<Wert...Loop oder Do ... Loop Until i<Wert

With ... End With (Folge von Anweisungen in einem Objekt festlegen)

Die Schleifen können auch vorzeitig beendet werden mit:

Do-Schleife mit Exit Do

For-Schleife mit Exit For

3.2 Unterprogramm Aufruf:

Call Unterprogramm (Variable1, Variable2, ...)

3.3 Testen einer Variable ob sie leer ist (nicht zu verwechseln mit dem Inhalt 0 od. "")

If IsNull(Variablenname) Then ....

3.4 Tasten abfragen:

If KeyAscii = 43 Then 'hier wird die + Taste abgefragt; damit kann ich z.B. ähnlich wie bei Quicken das Datumsfeld um 1 erhöhen. Die Minus-Taste hat den Ascii-Wert 45.
Damit nicht bei jedem Tastendruck der Systemton erklingt kann man diesen mit

KeyAscii = 0

unterdrücken.

3.5 Fehlerroutine:

3.5.1 Verwendung der MS ACCESS Routine

On Error Goto Sprungmarke

.....

Sprungmarke1:
Exit Function (bzw. Sub)

Sprungmarke:
MsgBox Err.Description
Resume Sprungmarke1

Erläuterung: Mit On Error ... springe ich beim auftreten eines Fehlers zur 2. Sprungmarke. Dort kann ich nun die von MS ACCESS zur Verfügung stehende Message-Box verwenden oder eine eigene schreiben. Mit Resume Sprungmarke1 springe ich ans Ende der Prozedur oder Funktion.

3.5.2 Bestimmten Fehler überspringen:

On Error Goto Sprungmarke
weiter_resume:

....

Sprungmarke1:
Exit Function (bzw. Sub)

Sprungmarke:
If Err = 2424 Then

Debug.Print "Fehler mit Nr. 2424 übersprungen"
Err = 0
Resume weiter_resume

Else

MsgBox Err.Description
Resume Sprungmarke1

End If

Zurück