BEISPIEL
HINWEIS
Anzeige aller Formulare in einem Listenfeld
Private Sub Form_Load()
On Error Resume Next
Dim db As Database
Dim i As Integer
Dim contest As Container
Dim s As String
Instanz der aktuellen Datenbank ermitteln:
Set db = CurrentDb()
Die Forms-Collection abrufen:
Set contest = db.Containers("Forms")
For i = 0 To contest.Documents.Count - 1
If s <> "" Then
s = s & ";""" & contest.Documents(i).Name & """"
Else
s = s & """" & contest.Documents(i).Name & """"
End If
Next i
In die Liste eintragen:
List1.RowSource = s
End Sub
Das komplette Beispiel finden Sie auf der Buch-CD.
Objekt-Assistenten (Beispiel)
Als Beispiel für einen Objekt-Assistenten wollen wir einen Formular-Wizard erstellen. Im Unterschied zum
Menü-Add-In findet bei diesem Assistenten ein Austausch von Informationen mit dem Access-Programm
statt:
Zum einen kann an den Assistenten der Name einer Tabelle oder Abfrage übergeben werden (z.B. das
Kombinationsfeld im Formular-Neu-Dialog),
zum anderen erzeugt das Add-In ein neues Objekt (Tabelle, Formular etc.) in der Datenbank.
Aus diesem Grund ändert sich auch die Aufrufsyntax der Eintrittsprozedur:
Function StartFormularAddIn(sztable As String) As Integer
' Beispiel:
' MsgBox "Gewählt wurde Tabelle:" & sztable, 64, "Info"
End Function
Übergeben wird, falls gewählt, der Name einer Tabelle oder Abfrage, die als DataSource genutzt werden
kann. Ob eine Tabelle gewählt werden muss oder nicht, entscheiden Sie mit den Einträgen in der Tabelle
USysRegInfo.
999
Entwickeln von Assistenten und Add-Ins
Kapitel 15: Anwendungsdesign
Optionen in der Tabelle USysRegInfo
Die Einträge für den Formular-Assistenten:
Abbildung 15.74 Beispieleinträge für einen Formular-Assistenten
Mit dem ersten Eintrag wird wieder ein Schlüssel erzeugt. Bei einem Berichtsassistenten müssen Sie diesen
natürlich nicht unter »Wizards\Form Wizards« eintragen, sondern unter »Wizards\Report Wizards«.
Die zweite Zeile bestimmt die Beschreibung, die im Dialogfeld Neues Formular angezeigt wird. Den Namen
der Eintrittsprozedur übergeben Sie in der dritten Zeile. Zeile 4 legt den Index, d.h. die Position in der Liste
der Assistenten, fest. Unter Library findet sich wieder der Verweis auf die Add-Ins-Datenbank. Mit Data-
SourceRequired = 1 erzwingen Sie die Auswahl einer Tabelle oder Abfrage, die als DataSource für das neue
Formular (oder den Report) verwendet werden kann.
Die Startprozedur
Nun endlich kommen wir zur Realisierung des eigentlichen Assistenten (Wizards). Erster Schritt nach dem
Aufruf der Eintrittsprozedur dürfte die Anzeige eines Dialogfeldes sein. Wir beschränken uns hier auf einen
einfachen Dialog:
Function StartFormularAddIn(sztable As String) As Integer
DoCmd.OpenForm "Formular-Assistent"
End Function
Das Assistenten-Formular
Der Aufbau der Oberfläche ist recht trivial: Außer einem kurzen Text werden nur zwei Schaltflächen ver-
wendet:
Abbildung 15.75 Unser Assistent in der Entwurfsansicht
1000
HINWEIS
Seit Access 2007 die Formulare auch im Registerkartenformat anzeigt, ist es wichtig, dass Assistenten-Formu-
lare als Popup-Fenster erscheinen (Eigenschaft Popup = True).
Das Erstellen neuer Formulare/Objekte
Wird die Schaltfläche »Fertigstellen« gewählt, erzeugt unser Formular-Assistent ein einfaches Dialogfeld
(fester Rahmen, keinen Datensatzmarkierer etc.) mit zwei Schaltflächen. Der Name wird automatisch mit
»Formular1« festgelegt.
Hinter der Schaltfläche »Fertigstellen« verbirgt sich folgender Code, der für Sie (hoffentlich) ausreichend
kommentiert ist:
Private Sub Befehl0_Click()
Dim frm As Form
Dim ctl As Control
Neues Formular erzeugen:
Set frm = CreateForm()
Eigenschaften des Formulars setzen:
frm.Caption = "Beispielformular" ' Überschrift
frm.ScrollBars = 0 ' Bildlaufleisten entfernen
frm.RecordSelectors = False ' Recordselector ausschalten
frm.AutoCenter = True ' Form zentrieren
frm.NavigationButtons = False ' Schaltflächen ausblenden
frm.BorderStyle = 3 ' Dialogfeld
frm.Width = 8000 ' Breite in Twips
frm.Section(0).Height = 5000 ' Höhe in Twips
Formular speichern:
DoCmd.Save
»OK«-Schaltfläche einfügen:
Set ctl = CreateControl(frm.Name,acCommandButton, acDetail, "", "", 6250, 4250, 1500, 500)
ctl.Name = "Button1"
ctl.Caption = "OK"
Verknüpfen mit einer Ereignisprozedur, die noch festgelegt wird:
ctl.OnClick = "[Ereignisprozedur]"
Schaltfläche »Abbruch« einfügen:
Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, "", "", 4500, 4250, 1500, 500)
ctl.Name = "Button2"
ctl.Caption = "Abbruch"
Verknüpfen mit einer Ereignisprozedur, die noch festgelegt wird:
ctl.OnClick = "[Ereignisprozedur]"
1001
Entwickeln von Assistenten und Add-Ins

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.