VBA-Schulung /28Ereignisse2 Behandlung von Ereignissen (Events)
VBA-Schulung /28Ereignisse3 Der Rechnungs-Assistent soll automatisch beim Erfassen der Kundennummer erscheinen Auswertung des Speicher-Events in der Tabelle Kundennummern
VBA-Schulung /28Ereignisse4 Einbindung der Tabelle Kundennummern in die Ereignisbehandlung In CTables.InitTableEvents ' Tabelle Kundennummern der Auflistung hinzufügen AddTableEvents GetTable(dbtblKundennummern)
VBA-Schulung /28Ereignisse5 Erweiterung der Ereignisbehandlung um die Reaktion auf das Speichern der Kundennummern In CTableEvents.mTbl_Changed den Abschnitt If (ChangedAspect And ORGDB_TC_CONTENT) = ORGDB_TC_CONTENT Then ' Wird ausgelöst, nachdem ein Datensatz gespeichert wurde...
VBA-Schulung /28Ereignisse6... folgendermassen erweitern... ' Falls eine Kundennummer gespeichert wurde,... ElseIf mTbl.Name = gTables.GetTable(dbtblKundennummern).Name Then '... dann Rechnungs-Assistenten aufrufen Invoicing.ShowInvoiceWizard End If
VBA-Schulung /28Ereignisse7 Wir testen...
VBA-Schulung /28Ereignisse8 Unglaublich!
VBA-Schulung /28Ereignisse9 Leider noch ein Fehler
VBA-Schulung /28Ereignisse10 Ereignisse Problem: Der Rechnungs-Assistent wird nach dem manuellen Aufruf aus dem Menü erneut durch das Speicher- Ereignis in den Kundennummern aufgerufen Rechnungs-Assistent Neue Position speichern Aktualisierung des Kundenumsatzes Kundennummerdatensatz gespeichert Neuer Rechnungs-Assistent erscheint (!)
VBA-Schulung /28Ereignisse11 Ereignisse Lösung: Public Sub ShowInvoiceWizard() Dim frmWizard As New FInvoiceWizard Static bRunning As Boolean If bRunning Then Exit Sub bRunning = True With frmWizard... End With bRunning = False End Sub
VBA-Schulung /28Ereignisse12 Ereignisse Funktionsweise im Detail: Überwachung der Ereignisse in VBA geschieht über eine modulweite Deklaration mit WithEvents: Private WithEvents mTbl As OrgDbServer31.Table Private WithEvents mDb As OrgDbServer31.Database Private WithEvents mDataApp As OrgData31.Application Der orgDbServer verfügt über Datenbank- und Tabellenereignisse (Einzusehen im Objekt-Katalog - F2) orgAnice Data kann Timer-Ereignisse abfeuern Über orgAnice Data-Ereignisse können Menüpunkte überlagert oder deaktiviert werden
VBA-Schulung /28Ereignisse13 Ereignisse Das „wichtigste“ Ereignis ist das Changed-Ereignis des Table-Objects Im Parameter ChangedAspect steht was sich geändert hat Mehrere Änderungszustände können gleichzeitig eingetreten sein.
VBA-Schulung /28Ereignisse14 Ereignisse OfficePi-Makros: In den OfficePi-Makros werden Tabellen- ereignisse in mehreren Tabellen überwacht. Die Überwachung geschieht in der Klasse CTableEvents. Klasse CTables instanziiert mehrere Instanzen der Klasse CTableEvents Im Modul GlobalDefs wird eine globale Instanz der Klasse CTables deklariert (gTables) In GlobalDefs.InitGlobalObjects wird gTables instanziiert GlobalDefs CTables CTableEvents
VBA-Schulung /28Ereignisse15 Haben Sie Fragen?
VBA-Schulung /28Ereignisse16 Vielen Dank für Ihre Aufmerksamkeit