SCHWERPUNKT

Suche in Daten mit m:n-Beziehungen

Suche nach Schlüsseln

Im vorliegenden Fall wesentlich genauer und einfacher zu bedienen ist wohl eine Lösung, die alle vorhandenen Skills in Form von Kombinationsfeldern zur Auswahl anbietet. Auf diese Weise kann der Benutzer wesentlich schneller die gesuchten Skills auswählen und dabei außerdem keine Eingabefehler mehr machen.

Der Entwurf sieht ähnlich aus wie beim vorherigen Formular (Bild 8). Allerdings gibt es statt eines Textfeldes zur Eingabe beliebig vieler Suchbegriffe fünf Kombinationsfelder. Sie heißen cboSkill1 bis cboSkill5 und enthalten als Datensatzherkunft jeweils die Tabelle tblSkills. Damit sie nur den Skill und nicht die ID anzeigen, sind die Eigenschaften Spaltenanzahl und Spaltenbreiten auf die Werte 2 beziehungsweise 0cm eingestellt.

Bild 8: Ergebnis der Suche nach fünf verschiedenen Skills.
Bild 8: Ergebnis der Suche nach fünf verschiedenen Skills.

Die Datenherkunft des Formulars ist beim Öffnen des Formulars die gleiche wie beim vorherigen Formular, aber das Aktualisieren des Suchergebnisses funktioniert natürlich etwas anders. Die Prozeduren, die durch die Ereigniseigenschaften Nach Aktualisierung ausgelöst werden, rufen jeweils die Routine SucheAktualisieren auf (Listing 2). Die entsprechenden Ereignisprozeduren der anderen Kombinationsfelder sehen ähnlich aus.

Private Sub cboSkill1_AfterUpdate()
SucheAktualisieren
End Sub

Diese Routine durchläuft alle fünf Kombinationsfelder und prüft, ob sie einen Wert enthalten. Ist das der Fall, setzt die Routine die Werte zu einem Suchkriterium wie etwa (tblPersonenSkills. SkillID) = 1 Or (tblPersonenSkills.SkillID) = 2 Or (tblPersonenSkills.SkillID) = 3 zusammen.