Fehler
Wie jede Programmiersprache so hat auch MS ACCESS die kleinen Käfer genannt Bugs. Damit Sie nicht auch stundenlang an Ihrem Programm verzweifeln habe ich diese Seite generiert.
1. VBA und Unterformulare
1.1 Wird in einem Unterformular VBA-Code benötigt welcher bei einem Ereignis im Unterformular ausgeführt werden soll, so kann es zu unerklärlichen Fehlern bei Verwendung der Maus aus dem Unterformular ins Hauptformular oder umgekehrt kommen. Diese Fehler treten nicht immer auf und werden durch den VBA-Code im Unterformular hervorgerufen. Diese können zwar wieder abgefangen werden würden aber die eigentlichen Fehlerroutinen umgehen.
1.2 Beim Wechsel von einem Unterformular zum Hauptformular und umgekehrt werden nur die Ereignisse 'Beim Verlassen' bzw. 'Beim Hingehen' des Unterformulars durchlaufen nicht jedoch die Prozeduren z.B. 'Bei Fokuserhalt' bzw. 'Bei Fokusverlust'. Auch alle anderen Ereignisse werden übersprungen! Dabei ist auch noch zu unterscheiden wie ich ein Feld ansteuere bzw. verlasse. Erfolgt dies im Unterformular selbst, so werden die Prozeduren ausgeführt. Aber: Verläßt man das letzte Feld, so daß entweder in ein weiteres Unterformular oder zurück ins Hauptformular gesprungen wird, so werden die Prozeduren nicht durchlaufen! Da ich dem Anwender die Benutzung der Maus nicht unterbinden kann und will - mit der der Anwender jederzeit die Möglichkeit hat, das Unterformular zu verlassen - muß man bei Verwendung von VBA auf Unterformulare verzichten.
2. Methode .SetFocus
Um z.B. das Verlassen eines Feldes bei nicht korrekter Eingabe mittels .SetFocus zu unterbinden weigert sich MS ACCESS zunächst diesen Befehl auszuführen. Abhilfe: Zunächst den Focus auf ein anderes Feld setzen und anschließend wieder auf das ursprüngliche.
3. Löschen von Duplikaten
Fals Sie auch die Eingabe eines DS dahin überprüfen ob dieser nicht schon in der DB vorhanden ist, so wird dieser ersteinmal abgespeichert. Die Speicherung erfolgt aber nicht sofort (Versuchen Sie es, in dem Sie einen neuen DS eingeben und 'Beim Verlassen' des letzten Feldes mittels VBA nach eben diesem Suchen). Dieses hat nun einen Vorteil und einen Nachteil. Vorteil: Bei Suche eines Duplikats stoße ich nicht auf den gerade eingegebenen Datensatz. Nachteil: Sie können zu diesem Zeitpunkt den Datensatz aus Ihrer Datenbank nicht löschen. Abhilfe: Mit der
DoCmd.GoToRecord-Methode wird MS ACCESS veranlaßt, den Datensatz vorher abzuspeichert. Z.B:
DoCmd.GoToRecord acDataForm, "Besteller", acGoTo, zaehler
wobei Besteller der Formularname ist und zaehler eine gültige Zahl <= Anzahl der Datensätze
Möglicherweise gibt es noch andere Kommando's um das abspeichern zu erzwingen.