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 mitKeyAscii = 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 Sprungmarke1Erlä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 ThenDebug.Print "Fehler mit Nr. 2424 übersprungen"
Err = 0
Resume weiter_resumeElse
MsgBox Err.Description
Resume Sprungmarke1End If