Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
von Klaus Giesen, Wuppertal
Skills ist die „neudeutsche“ Bezeichnung für Fähigkeiten oder Kompetenzen von Personen. Dieser Begriff ist vor allem bei freiberuflichen IT-Kräften oder Freelancern gang und gäbe, die für unterschiedliche Unternehmen arbeiten und dort aufgrund ihrer durch die Skills repräsentierten Fähigkeiten für spezielle Aufgaben herangezogen werden. Der Einsatzbereich der hier vorgestellten Datenbankanwendung ist die Verwaltung von Personen und deren Skills, um zur rechten Zeit einen geeigneten Mitarbeiter zu finden.
Die im vorliegenden Beitrag vorgestellte Musterlösung dient neben der Verwaltung von Personen und deren Kontaktdaten primär der Erfassung von Fähigkeiten und entsprechenden Bewertungen.
Erfassung von Bewertungen
Die Bewertung von Fähigkeiten kann im einfachsten Fall durch die Zuordnung von Schulnoten erfolgen.
Aussagekräftiger ist die Zuordnung von individuellen Bewertungskriterien je Fähigkeit. Die folgenden Beispiele verdeutlichen dies:
Fähigkeit |
Mögliche Bewertungen |
VB-Programmierung |
Gut, mittel, schlecht |
Englisch |
Keine Kenntnisse, Anfänger, fortgeschritten, verhandlungssicher, Muttersprache |
Führerschein |
Klasse 1, Klasse 2, Klasse 3 |
Tab. 1: Beispiele zum Bewertungssystem
Nur ein solches Bewertungssystem ermöglicht es, jeder Fähigkeit individuelle und vor allem auch aussagekräftige Bewertungen zuzuordnen. Falls Sie jedoch Schulnoten vorziehen sollten, können Sie diese natürlich ebenfalls verwenden.
Erfassung von Eindrücken
Bei der Erfassung von Skills sollte die eigene Bewertung des Bewerbers – beispielsweise aufgrund seines Bewerbungsschreibens – und eine Bewertung des Bearbeiters – beispielsweise der Eindruck beim Bewerbungsgespräch – erfasst und gegenübergestellt werden können.
Suchen
Damit die Musterlösung den Anforderungen der Praxis gerecht werden kann, sollten differenzierte Suchmöglichkeiten vorhanden sein. Dazu zählen unter anderem die Auswahl verschiedener Vergleichsoperatoren und Verknüpfungen mit AND bzw. OR. Außerdem soll die Musterlösung auch noch die Möglichkeit zur schnellen Auswahl eines bestimmten Datensatzes bieten.
Ausdruckmöglichkeiten
Da das papierlose Büro immer noch eine Fiktion ist, sieht auch diese Musterlösung zwei Ausdruckmöglichkeiten vor.
Der erste Bericht druckt alle relevanten Angaben zu einer Person in Form eines Profils aus, damit diese Angaben übersichtlich auf Papier vorliegen.
Die zweite Ausdruckmöglichkeit betrifft das Ergebnis einer Suche. In solchen Fällen ist es oftmals sinnvoll, die Kontaktangaben zu einer Person wie Telefon- und Faxnummer sowie die E-Mail-Adresse auf Papier griffbereit zu haben.
Hinweis
Diese Musterlösung zu einer Skill-Verwaltung finden Sie auf der beiliegenden CD-ROM für Access 97 (Skills97.mdb) und Access 2000 (Skills2000.mdb).
Das Datenmodell dieser Musterlösung benötigt zunächst die drei Tabellen tblPersonen, tblFaehigkeiten und tblBewertungen zur Erfassung der betreffenden Daten. Die Tabellen stehen in folgenden Beziehungen zueinander:
Die Realisierung der m:n-Beziehungen zwischen Personen und Fähigkeiten sowie Bewertungen erfolgt über die Tabelle tblPersonenUndFaehigkeiten. Die folgenden Abschnitte beschreiben den genauen Aufbau der einzelnen Tabellen.
Die Tabelle tblPersonen
Die Tabelle tblPersonen (siehe Bild 1) dient dem Speichern der Stammdaten. Sie enthält – neben den üblichen personenbezogenen Feldern – weitere speziell für die vorliegende Aufgabenstellung notwendige Felder.
Die Namen dieser Felder und eine dazugehörende Beschreibung entnehmen Sie Tab. 2.
Feld |
Beschreibung |
StundensatzVon |
Untergrenze des Stundensatzes |
StundensatzBis |
Obergrenze des Stundensatzes |
Quelle |
Woher stammt der Kontakt Anzeige, Bewerbung, Internet usw. |
VerfügbarkeitInProzent |
Typische Angabe für Freiberufler: Die prozentuale Verfügbarkeit für einen bestimmten Auftraggeber |
Taetigkeitsraum |
Postleitzahlbereich, deutschland- oder europaweit. |
Tab. 2: Spezielle Felder der Tabelle tblPersonen
Alle Felddatentypen sind in der vorliegenden Musterlösung auf Text eingestellt, um für die zu erfassenden Angaben eine größtmögliche Flexibilität zu erlauben.
Bild 1: Die Tabelle tblPersonen in der Entwurfsansicht
Die Tabelle tblFaehigkeiten
Die Tabelle tblFaehigkeiten (siehe Bild 2) enthält neben dem Primärschlüsselfeld lediglich ein weiteres Textfeld zum Speichern von Fähigkeiten.
Die Tabelle tblBewertungen
Die Tabelle tblBewertungen (siehe Bild 3) enthält neben dem Primärschlüsselfeld und einem Textfeld zum Speichern der Bemerkungen noch das Sekundärschlüsselfeld FaehigkeitID. Die Bedeutung dieses Sekundärschlüsselfelds ist im Abschnitt Beziehungen erklärt.
Bild 2: Die Tabelle tblFaehigkeiten in derEntwurfsansicht
Bild 3: Die Tabelle tblBewertungen in derEntwurfsansicht
Bild 4: Die Tabelle tblPersonenUndFaehigkeiten in der Entwurfsansicht
Die Tabelle tblPersonenUndFaehigkeiten
Die Tabelle tblPersonenUndFaehigkeiten (siehe Bild 4) dient als Zwischentabelle zur Realisierung der benötigten n:m-Beziehungen. In Tab. 3 finden Sie eine Aufstellung der Tabellenfelder und eine zugehörige Beschreibung.
Feld |
Beschreibung |
PersonUndFaehigkeitID |
Primärschlüsselfeld |
PersonID |
Sekundärschlüsselfeld zur Tabelle tblPersonen |
FaehigkeitID |
Sekundärschlüsselfeld zur Tabelle tblFaehigkeiten |
BewertungID |
Sekundärschlüsselfeld zur Tabelle tblBewertungen |
EindruckID |
Verknüpfungsfeld zur Erstellung der erweiterten Bewertungen |
Bemerkung |
Memo-Feld für Bemerkungen |
Tab. 3: Felder und Beschreibung der Tabelle tblPersonenUndFaehigkeiten
Beim Feld BewertungID ist der Wert für die Eigenschaft Eingabe erforderlich auf den Wert Ja eingestellt, damit sichergestellt ist, dass bei der Datenerfassung jeder Fähigkeit auch eine Bewertung zugeordnet wird.
Zusammengesetzten Index erstellen
Bei der späteren Erfassung von Fähigkeiten und Bewertungen soll die mehrfache Zuordnung einer Fähigkeit zu einer Person nicht möglich sein.
Dies kann beispielsweise durch die Erstellung eines zusammengesetzten Index für die Sekundärschlüsselfelder PersonID und FaehigkeitID in der Tabelle tblPersonenUndFaehigkeiten realisiert werden.
Ausgangspunkt für die Erstellung eines zusammengesetzten Index ist die in der Entwurfsansicht geöffnete Tabelle.
Bild 5: Das Dialogfenster Indizes
Beziehungen
Die Beziehungen der Musterlösungen sind wie bei Access gewohnt im Dialogfenster Beziehungen dargestellt (siehe Bild 6). Alle Beziehungen sind vom Beziehungstyp 1:n mit aktivierter referentieller Integrität.
Die Kontrollkästchen Aktualisierungsweitergabe an verwandte Felder und Löschweitergabe an verwandte Datensätze sind bei allen Beziehungen deaktiviert.
Bild 6: Das Dialogfenster Beziehungen
Die Forderung, jeder Fähigkeit beliebige Bewertungen zuordnen zu können, erfordert neben den beiden 1:n-Beziehungen zur Abbildung der n:m-Beziehung eine weitere Verknüpfung zwischen den Feldern FaehigkeitID in den Tabellen tblBewertungen und tblFaehigkeiten.
Zu den beiden zentralen Formularen der Musterlösungen zum Erfassen, Bearbeiten und Anzeigen von Daten zählen das Formular frmPersonen und das mit diesem Formular verbundene Unterformular frmSkillsSub. Diese beiden Formulare werden im Folgenden vorgestellt.
Das Formular frmPersonen
Das Formular frmPersonen (siehe Bild 7) basiert auf der Tabelle tblPersonen. Das Formular zeigt als Einzelformular die Stammdaten einer Person an und dient daneben zur Aufnahme des Unterformulars frmSkillsSub. Geschlossen wird das Formular mit einem Klick auf die Schaltfläche btnClose im Formularfuß, die die Ereignisprozedur aus Quellcode 1 ausführt.
Auswahl von Datensätzen
Jede Datenbankanwendung sollte die Möglichkeit bieten, schnell einen Datensatz als aktuellen Datensatz auszuwählen.
Bild 7: Das Formular frmPersonen
Private Sub btnClose_Click() On Error Resume Next DoCmd.Close acForm, Me.Name End Sub
Quellcode 1
Private Sub btnAuswahl_Click() If Me!lstAuswahl.Visible Then Me!lstAuswahl.Visible = False Else DoCmd.RunCommand acCmdSaveRecord Me!lstAuswahl.Requery Me!lstAuswahl.Visible = True End If End Sub
Quellcode 2
In dieser Musterlösung wird das über ein unsichtbares Listenfeld bewerkstelligt, das über eine Schaltfläche sichtbar geschaltet wird.
Diese Schaltfläche trägt die Beschriftung Auswahl. Nach einem Klick auf die Schaltfläche kann der Benutzer den gewünschten Datensatz auswählen. Daraufhin kann auch das Listenfeld wieder geschlossen werden.
Doch was, wenn es sich der Anwender anders überlegt und gar nicht mehr zu einem anderen Datensatz wechseln will In diesem Fall wird das Listenfeld durch einen zweiten Klick auf die Schaltfläche btnAuswahl wieder unsichtbar gemacht.
Genau das leistet die Ereignisprozedur btnAuswahl_Click (s. Quellcode 2).
Nach Prüfung der Sichtbarkeit der Auswahlliste speichert die Prozedur zunächst den aktuellen Datensatz, fragt mit der Requery-Methode die Datensatzherkunft des Listenfelds erneut ab und schaltet das Listenfeld wieder unsichtbar.
Praxis-Tipp
Achten Sie beim Erstellen Ihrer Ereignisprozeduren auf vermeintliche Nebensächlichkeiten wie das vorherige Speichern des aktuellen Datensatzes oder das erneute Abfragen einer Datensatzherkunft wie bei dem gerade gezeigten Beispiel.
Praxis-Tipp
Ist die Auswahlliste beim Klick auf die Schaltfläche bereits sichtbar, hat es sich der Anwender anders überlegt und das Listenfeld kann direkt wieder unsichtbar geschaltet werden.
Das Listenfeld lstSuchen
Das Listenfeld lstSuchen ist als ungebundenes Listenfeld im Formular frmPersonen angeordnet (siehe Bild 8). Als Datensatzherkunft für das Listenfeld wird die SQL-Anweisung aus Quellcode 3 verwendet.
Die notwendigen Eigenschaftseinstellungen für das Listenfeld lstSuchen für den hier vorgestellten Zweck entnehmen Sie Tab. 4.
Bild 8: Das Listenfeld im Formular in der Entwurfsansicht
Bild 9: Suche per Listenfeld
SELECT tblPersonen.PersonID, tblPersonen.Nachname, tblPersonen.Vorname, tblPersonen.Firma FROM tblPersonen ORDER BY tblPersonen.Nachname, tblPersonen.Vorname;
Quellcode 3
Private Sub lstAuswahl_AfterUpdate() Dim rsObj As Object Set rsObj = Me.Recordset.Clone rsObj.FindFirst "[PersonID] = " _ & Str(Me![lstAuswahl]) Me.Bookmark = rsObj.Bookmark End Sub
Quellcode 4
Private Sub lstAuswahl_Click() Me!Vorname.SetFocus Me!lstAuswahl.Visible = False End Sub
Quellcode 5
Die Verknüpfung des Listenfelds zum Formular erfolgt über die PersonalID, deren Eigenschaft Spaltenbreite hier auf den Wert 0cm eingestellt ist.
Eigenschaft |
Einstellung |
Spaltenanzahl |
4 |
Spaltenüberschriften |
Ja |
Spaltenbreiten |
0cm;3cm;2,501cm;3cm |
Gebundene Spalte |
1 |
Sichtbar |
Nein |
In Reihenfolge |
Nein |
Tab. 4: Eigenschaftseinstellungen für das Listenfeld lstSuchen
Funktionalität der Suche
Die Funktionalität der Suche basiert auf den beiden Eigenschaften Nach Aktualisierung und Beim Klicken des Listenfelds mit den entsprechenden Ereignisprozeduren.
Nach der Auswahl des gewünschten Datensatzes im Listenfeld (siehe Bild 9) wird mit Hilfe der FindFirst-Methode und der Bookmark-Eigenschaft die PersonID des Listenfelds im Formular frmPersonen gesucht:
Das Ereignis Beim Klicken des Listenfelds setzt dann noch den Fokus auf ein anderes Steuerelement im Formular und schaltet das Listenfeld wieder unsichtbar (s. Quellcode 4).
Das Kombinationsfeld Quelle
Das Kombinationsfeld Quelle dient der Erfassung der Herkunft eines Personenkontakts.
Der Einfachheit halber besitzt dieses Kombinationsfeld als Herkunftstyp den Eintrag Wertliste und als Datensatzherkunft eine Werteliste mit den entsprechenden Angaben (siehe Bild 10). Die Werteliste lässt sich an dieser Stelle bei Bedarf auch bequem aktualisieren.
Abb. 10 Das Eigenschaftsfenster der Kombinationsfelds Quelle
Das Unterformular frmSkillsSub
Bild 11: Das Formular frmSkillsSub
Private Sub CboFaehigkeit_NotInList(NewData As _ String, Response As Integer) If MsgBox("Diese Fähigkeit ist neu. Möchten Sie " _ &"sie anlegen", vbYesNo) = vbYes Then Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("tblFaehigkeiten", _ DB_OPEN_DYNASET) rs.AddNew rs!Faehigkeit = NewData rs.Update Response = acDataErrAdded rs.Close Set rs = Nothing Set db = Nothing Else Response = acDataErrContinue CboFaehigkeit.Undo End If End Sub
Quellcode 6
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo