{"id":55000067,"date":"2002-06-01T00:00:00","date_gmt":"2021-02-10T20:10:07","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=67"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Literaturverwaltung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/","title":{"rendered":"Literaturverwaltung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Martin Hoffmann, D&uuml;sseldorf<\/p>\n<p><\/b><\/p>\n<p><b>Zur Organisation von B&uuml;chern und Zeitschriften in Unternehmen bietet sich eine Literaturverwaltung an, in der die Literatur nicht nur erfasst, sondern auch weiterverarbeitet werden kann. Dazu z&auml;hlt beispielsweise das automatische Erstellen von Literatur- und Signaturlisten. Der folgende Beitrag beschreibt eine Datenbank, die besondere Zusatzfunktionen enth&auml;lt, mit denen Sie den Nutzwert f&uuml;r die Anwender wesentlich erh&ouml;hen.<\/b><\/p>\n<p>Die Literaturverwaltung, die in den folgenden Abschnitten beschrieben wird, soll Ihnen zeigen, wie Sie generell eine Literaturverwaltung aufbauen k&ouml;nnen. Dabei lernen Sie, wie Sie einfache und komplexe Suchfunktionen in die Datenbank integrieren, wie Sie die Eingabe und Anzeige von Rezensionen gestalten und die Literaturdaten in Form eines Literaturanhangs in Word ausgeben. Au&szlig;erdem erfahren Sie, wie Sie benutzerabh&auml;ngige Literaturlisten speichern.<\/p>\n<p>Die folgende Abbildung (siehe Bild 1) zeigt die Hauptformulare der fertigen Literaturverwaltung. Das linke Formular dient der Erfassung der Literatur und das rechte der Verwaltung der Listen.<\/p>\n<p><IMG height=\"332\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Die Hauptfenster des Literatur-Managers<\/span><\/b><\/p>\n<p>Im Folgenden werden die wichtigsten Tabellen der Datenbank und deren Beziehungen kurz erl&auml;utert. Neben diesen Tabellen finden Sie in der Datenbank Detailtabellen wie tblDokumenttypen, tblVerlage oder tblBenutzer, deren Felder und Inhalte selbsterkl&auml;rend sind.<\/p>\n<p><b>Die Literatur-Tabelle<\/b><\/p>\n<p>Die Tabelle tblLiteratur stellt das zentrale Element der Datenstruktur dar. In ihr werden alle B&uuml;cher und Zeitschriften mit den wichtigsten Feldern wie Titel, Verlag, Erscheinungsjahr und Dokumenttyp abgelegt. Ferner lassen sich Schl&uuml;sselw&ouml;rter f&uuml;r die sp&auml;tere Suche definieren. &uuml;ber das Feld IstInternerBestand kennzeichnen Sie ein Buch, das in der eigenen Bibliothek zu finden ist oder das Sie selbst angeschafft haben. Wenn Sie das Kennzeichen weglassen, handelt es sich um ein Buch an einem externen Standort, z. B. in einer Universit&auml;tsbibliothek. Bild 2 zeigt alle Felder der Tabelle tblLiteratur.<\/p>\n<p><b>Autoren<\/b><\/p>\n<p>Jedem Werk k&ouml;nnen mehrere Autoren mit verschiedenen Funktionen (z. B. Autor, Co-Autor etc.) zugewiesen werden. Alle Autoren werden zentral in der Tabelle tblAutoren mit Vor- und Nachnamen einmal gespeichert. Die Verkn&uuml;pfung zu den Werken erfolgt &uuml;ber die Tabelle tblLiteraturAutoren. In dieser Tabelle wird auch die Funktion festgelegt.<\/p>\n<p><IMG height=\"286\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic002.png\" width=\"290\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Die Datenfelder der Tabelle tblLiteratur<\/span><\/b><\/p>\n<p><b>Standorte und Signaturen<\/b><\/p>\n<p>Die Datenbank ist so ausgelegt, dass jedes Werk an mehreren Standorten verf&uuml;gbar sein kann. Wenn ein Werk zum Beispiel gerade in der hausinternen Bibliothek vergriffen ist, k&ouml;nnen Sie in der Datenbank die weiteren m&ouml;glichen Standorte und die Signatur des Werks am jeweiligen Standort einsehen.<\/p>\n<p><IMG height=\"261\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Das Datenmodell f&uuml;r Standorte und Signaturen<\/span><\/b><\/p>\n<p>Die Standorte werden in der Tabelle tblStandorte mit den Feldern Standortname, Beschreibung und Ort gepflegt. In diese Tabelle k&ouml;nnen Sie auch Standorte eingeben, die sich in Ihrem Unternehmen befinden. Solche Standorte k&ouml;nnen beispielsweise Abteilungen sein. Die unternehmensinternen Standorte werden &uuml;ber das Feld IstInternerStandort gekennzeichnet.<\/p>\n<p>Die Verkn&uuml;pfung der Standorte mit den Werken erfolgt mit einer n:m-Beziehung &uuml;ber die Tabelle tblSignaturen (siehe Bild 3). In diese Tabelle geben Sie f&uuml;r jeden Standort eines Werks die Signatur ein.<\/p>\n<p>&uuml;ber die Tabelle tblVerbleiborte k&ouml;nnen Sie f&uuml;r jedes Werk eine Verteilerliste anlegen. In dieser k&ouml;nnen f&uuml;r unterschiedliche Zeitr&auml;ume die Standorte eines Werks abgelegt werden. So k&ouml;nnte eine Verteilerliste f&uuml;r die n&auml;chste Erg&auml;nzungslieferung oder eine PC-Zeitschrift wie in Tab. 1 aussehen.<\/p>\n<p><IMG height=\"311\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic004.png\" width=\"460\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Die Tabellenstruktur f&uuml;r Rezensionen<\/span><\/b><\/p>\n<p><IMG height=\"288\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  n:m-Beziehung f&uuml;r Verweise zwischen Werken<\/span><\/b><\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Standort<\/b><\/p>\n<\/td>\n<td>\n<p><b>Von-Datum<\/b><\/p>\n<\/td>\n<td>\n<p><b>Bis-Datum<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>EDV Abteilung<\/p>\n<\/td>\n<td>\n<p>  1.4.2002<\/p>\n<\/td>\n<td>\n<p>  5.4.2002<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Vertrieb<\/p>\n<\/td>\n<td>\n<p>  8.4.2002<\/p>\n<\/td>\n<td>\n<p>12.4.2002<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Marketing<\/p>\n<\/td>\n<td>\n<p>15.4.2002<\/p>\n<\/td>\n<td>\n<p>19.4.2002<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bibliothek<\/p>\n<\/td>\n<td>\n<p>20.4.2002<\/p>\n<\/td>\n<td><\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Beispiel f&uuml;r Verbleiborte einer PC-Zeitschrift<\/b><\/p>\n<p><b>Rezensionen<\/b><\/p>\n<p>Die Literaturverwaltung sieht vor, dass jeder Benutzer der Datenbank eine Wertung zu einem Werk abgeben kann. Dazu werden in der Tabelle tblRezensionen die LiteraturID, die BenutzerID, das Anlagedatum mit Uhrzeit und der Rezensionstext gespeichert. Au&szlig;erdem kann eine Wertung zwischen 1 (sehr schlecht) und 5 (sehr gut) im Feld WertungID eingegeben werden. Die Wertung wird in diesem Beispiel in einer eigenen Tabelle tblWertungen gespeichert, da nicht die Zahl selbst im Formular erscheinen soll, sondern eine Grafik, welche die Bewertung symbolisiert. Die Grafik wird im OLE-Feld WertungBild abgelegt (siehe Bild 4) und so mit der Wertungszahl verkn&uuml;pft. N&auml;heres zur Vorgehensweise und zur Formularprogrammierung finden Sie in Abschnitt 5.<\/p>\n<p><b>Referenzen<\/b><\/p>\n<p>Das Verlinken von Werken innerhalb der Datenbank oder das Zusammenfassen von Werken zu Gruppen oder B&auml;nden (z. B. Zeitschriften-Jahrg&auml;nge) realisieren Sie &uuml;ber eine n:m-Beziehung der Tabelle tblLiteratur auf sich selbst. Als Zwischentabelle dient die Tabelle tblVerweise, in die die beiden Fremdschl&uuml;ssel LiteraturID und VerweisLiteraturID sowie eine Bemerkung zu der Verkn&uuml;pfung eingegeben werden k&ouml;nnen.<\/p>\n<p>Der Aufbau der Beziehungen ist in Bild 5 dargestellt.<\/p>\n<p>Eine n:m-Beziehung auf sich selbst legen Sie im Beziehungen-Fenster wie folgt an:<\/p>\n<li>F&uuml;gen Sie die Tabellen tblLiteratur und tblVerweise im Beziehungen-Fenster hinzu.<\/li>\n<li>Verkn&uuml;pfen Sie die Tabellen &uuml;ber das jeweilige LiteraturID-Feld miteinander.<\/li>\n<li>Da Sie den Prim&auml;rschl&uuml;ssel einer Tabelle nicht mit zwei Fremdschl&uuml;sseln der gleichen Tabelle verkn&uuml;pfen k&ouml;nnen, f&uuml;gen Sie die Tabelle tblLiteratur ein zweites Mal hinzu. Die Tabelle erh&auml;lt im Beziehungen-Fenster den Namen tblLiteratur_1.<\/li>\n<p><IMG height=\"277\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Aufbau der Literaturlisten-Tabellen<\/span><\/b><\/p>\n<p><IMG height=\"422\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Das Formular frmLiteratur in der Entwurfsansicht<\/span><\/b><\/p>\n<li>Stellen Sie die Beziehung zwischen der Tabelle tblLiteratur_1 und der Tabelle tblVerweise &uuml;ber das Fremdschl&uuml;sselfeld VerweisLiteraturID her.<\/li>\n<p><b>Literaturlisten<\/b><\/p>\n<p>Eine besondere Funktion stellen die benutzerabh&auml;ngigen Literaturlisten dar. Mit diesen kann jeder Benutzer beliebig viele Liste unterschiedlichster Gruppierung zusammenstellen und verwalten.<\/p>\n<p>So k&ouml;nnte eine Liste interessante Artikel in PC-Zeitschriften enthalten und eine andere die Literatur f&uuml;r eine Ver&ouml;ffentlichung.<\/p>\n<p>Die Listen werden in der Tabelle tblLiteraturlisten mit einem Namen und der BenutzerID gespeichert. <\/p>\n<p>Zu jeder Liste lassen sich dann Positionen hinzuf&uuml;gen, die die Tabelle tblLiteraturlistenPositionen aufnimmt.<\/p>\n<p>Das Feld Sortierung ist f&uuml;r sp&auml;tere Zwecke vorgesehen, um die Reihenfolge der Listenelemente manuell zu ver&auml;ndern.<\/p>\n<p>In dieser Version der Datenbank werden die Listenelemente zun&auml;chst alphabetisch nach Titeln sortiert. Bild 6 zeigt die Beziehungen zwischen den Tabellen.<\/p>\n<p>Nachdem Sie nun die Tabellenstruktur der Datenbank kennen, k&ouml;nnen Sie mit dem Entwurf des Literaturformulars zur Erfassung der Werke beginnen. <\/p>\n<p>Gehen Sie dazu wie folgt vor:<\/p>\n<li>Legen Sie ein neues Formular mit dem Namen frmLiteratur an, das auf der Tabelle tblLiteratur basiert.<\/li>\n<li>F&uuml;gen Sie im Detailbereich ein Registersteuerelement mit sechs Registerseiten ein und benennen Sie die Registerseiten gem&auml;&szlig; Bild 7.<\/li>\n<li>F&uuml;gen Sie im Register 1-Allgemein die Basisfelder der Tabelle sowie ein Unterformular f&uuml;r die Autoren ein.<\/li>\n<li>Platzieren Sie die Felder Notizen und Bemerkung auf der Registerseite 2-Notizen.<\/li>\n<p>Die wichtigsten Felder h&auml;tten Sie damit in das Formular aufgenommen.<\/p>\n<p><IMG height=\"220\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic008.png\" width=\"392\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Die Literatur-Schnellsuche<\/span><\/b><\/p>\n<pre>Private Sub btnSuchen_Click()\r\n    Dim rstLiteratursuche As Recordset\r\n    If Nz(txtTitelsuche, \"\") &lt;&gt; \"\" Then\r\n        Set rstLiteratursuche = Me.RecordsetClone\r\n        With rstLiteratursuche\r\n            .FindFirst \"Titel like \"\"*\" & _                Me!txtTitelsuche & \"*\"\"\"\r\n            If Not .NoMatch Then\r\n                Me.Bookmark = .Bookmark\r\n            End If\r\n        End With\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Den Aufbau des Unterformulars f&uuml;r Rezensionen finden Sie weiter unten im Abschnitt 5. <\/p>\n<h3>Unterformulare anlegen<\/h3>\n<p>F&uuml;r die Registerseiten 4, 5 und 6 legen Sie zun&auml;chst jeweils ein Formular auf Basis der Tabellen tblSignaturen, tblVerweise und tblVerbleiborte an. Stellen Sie dann die Formulareigenschaft der drei Formulare wie in Tab. 2 ein. F&uuml;gen Sie anschlie&szlig;end die Unterformulare auf den entsprechenden Registerseiten ein.<\/p>\n<h3>Titelzeile einf&uuml;gen<\/h3>\n<p>Das Literaturformular w&auml;re damit fast fertig gestellt. Damit Sie beim Umschalten zwischen den Registerseiten den aktuellen Titel immer im Blick haben, f&uuml;gen Sie oberhalb des Registers noch ein Textfeld mit dem Namen txtTitel ein.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Eigenschaft<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Standardansicht<\/p>\n<\/td>\n<td>\n<p>Datenblatt<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bildlaufleisten<\/p>\n<\/td>\n<td>\n<p>Nur vertikal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Datensatzmarkierer<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Navigationsschaltfl&auml;chen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Formulareigenschaften f&uuml;r die Unterformulare<\/b><\/p>\n<p>Damit das Formular immer den Titel des aktuell angezeigten Werkes anzeigt, f&uuml;gen Sie beim Formular-Ereignis Beim Anzeigen die folgenden Code-Zeilen ein:<\/p>\n<pre>If Me.NewRecord Then\r\n    Me!txtTitel = \"(Neuer Titel)\"\r\nElse\r\n    Me!txtTitel = Me!Titel\r\nEnd If<\/pre>\n<p>Die Prozedur pr&uuml;ft, ob es sich um einen neuen Datensatz handelt, und zeigt in diesem Fall den Text (Neuer Titel) an. Wenn ein bestehender Datensatz vorliegt, wird der Inhalt des Feldes Titel im Textfeld angezeigt.<\/p>\n<p>In die Datenbank werden zwei Suchfunktionen integriert. Zum einen eine Schnellsuche, &uuml;ber die direkt im Formular nach einem bestimmten Titel gesucht werden kann. Zum anderen eine Detailsuche, bei der die unterschiedlichsten Felder wie Autor, Verlag oder Erscheinungsjahr als Suchkriterien eingegeben werden k&ouml;nnen.<\/p>\n<p><b>Schnellsuche<\/b><\/p>\n<p>Die Schnellsuche soll im Formularkopf erfolgen und wird mithilfe des Textfeldes txtTitelsuche und zwei Befehlsschaltfl&auml;chen btnSuchen und btnWeitersuchen realisiert (siehe Bild 8).<\/p>\n<p><!--30percent--><\/p>\n<p>Um bei einer Suche den ersten Eintrag zu finden, der den eingegebenen Text enth&auml;lt, hinterlegen Sie f&uuml;r das Beim Klicken-Ereignis der Schaltfl&auml;che btnSuchen den Programmcode aus Quell-code 1.<\/p>\n<p><IMG height=\"548\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic009.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Der Suchen-Dialog in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst, ob im Suchfeld ein Suchtext eingegeben wurde. Die NZ-Funktion testet dabei den Wert Null und Leerzeichenketten ab. Wenn ein Suchtext eingegeben ist, wird der Datenbestand des Formulars in die Variable rstLiteratursuche vom Typ Recordset kopiert. Anschlie&szlig;end f&uuml;hrt die Prozedur eine Like-Suche mit der Methode FindFirst durch und ermittelt den ersten Datensatz, der dem Suchkriterium entspricht. &uuml;ber die Bookmark-Eigenschaft des Formulars wird schlie&szlig;lich auf den Datensatz positioniert.<\/p>\n<p>Um weitere Werke mit dem gleichen Kriterium zu finden, k&ouml;nnen Sie fast den identischen Quellcode bei der Schaltfl&auml;che btnWeitersuchen verwenden. Sie m&uuml;ssen lediglich die Methode FindFirst gegen die Methode FindNext austauschen. <\/p>\n<p><b>Suchen-Dialog<\/b><\/p>\n<p>F&uuml;r die Detailsuche ben&ouml;tigen Sie ein eigenes Formular, in das Sie die Kriterien eingeben k&ouml;nnen und eine Ergebnisliste angezeigt bekommen. Gehen Sie dazu folgenderma&szlig;en vor:<\/p>\n<li>Legen Sie ein neues Formular mit dem Namen frmSuchenDialog an.<\/li>\n<li>F&uuml;gen Sie die Felder, nach denen Sie suchen m&ouml;chten, als ungebundene Steuerelemente in das Formular ein. Die in der Beispieldatenbank verwendeten Felder sehen Sie in Bild 9.<\/li>\n<li>Benennen Sie die Felder entsprechend den Namenskonventionen. Im Beispiel wurden die folgenden Felder verwendet: txtTitel, txtAutor, txtSchlagw&ouml;rter, cmbVerlag, txtVonJahr, txtBisJahr, txtISBNISSN, cmbDokumentTyp und chkIstEigenerBestand.<\/li>\n<li>F&uuml;gen Sie die Schaltfl&auml;chen btnSuchen, btn&ouml;ffnen und btnSchlie&szlig;en in das Formular ein.<\/li>\n<li>Legen Sie ein Listenfeld mit dem Namen lstErgebnisliste an, in dem das Suchergebnis dargestellt wird.<\/li>\n<h3>Abfrage f&uuml;r die Ergebnisliste<\/h3>\n<p>Als Datenherkunft f&uuml;r das Listenfeld legen Sie ein neue Abfrage mit dem Namen qrySuchergebnis auf Basis der Tabelle tblLiteratur an. F&uuml;gen Sie alle Felder hinzu, die Sie durchsuchen oder ggf. zus&auml;tzlich anzeigen m&ouml;chten. <\/p>\n<p>In diesem Zusammenhang stellt die Detailsuche und die Anzeige von Autoren ein Problem dar. Da die Autoren nicht direkt in der Literaturtabelle, sondern in einer gesonderten Tabelle gespeichert sind, w&uuml;rde man bei einem Werk mit mehreren Autoren mehrere Ergebniseintr&auml;ge erhalten, obwohl es sich um dasselbe Werk handelt. <\/p>\n<p>Um pro Literaturdatensatz alle Autoren des Werks in einem Feld darzustellen, bedient sich die Abfrage in der Beispieldatenbank eines Tricks. Anstatt die Tabelle tblAutoren zu verwenden und den Vor- und Nachnamen als Spalten aufzunehmen, ruft die Abfrage die Funktion getAutorenliste (s. Quellcode 2) auf.<\/p>\n<pre>Public Function GetAutorenliste(LiteraturID As Long, Format As Integer) As String\r\n    Dim db As Database\r\n    Dim rstAutoren As Recordset\r\n    Dim SQL As String\r\n    Dim Autorenliste As String\r\n    Autorenliste = \"\"\r\n    SQL = \"SELECT * FROM qryAutorenProLiteratur \" _        & \"WHERE LiteraturID=\" & LiteraturID\r\n    Set db = CurrentDb()\r\n    Set rstAutoren = db.OpenRecordset(SQL)\r\n    With rstAutoren\r\n        If .RecordCount &gt; 0 Then\r\n            .MoveFirst\r\n            While Not .EOF\r\n                Select Case Format\r\n                    Case 1:\r\n                        Autorenliste = Autorenliste _                            & !Nachname & \", \" _                            & !Vorname & \"; \"\r\n                    Case 2:\r\n                        Autorenliste = Autorenliste _                            & !Vorname & \" \" _                            & !Nachname & \", \"\r\n                End Select\r\n                .MoveNext\r\n            Wend\r\n        End If\r\n    End With\r\n    If Len(Autorenliste) &gt; 2 Then\r\n        Autorenliste = Left(Autorenliste, _            Len(Autorenliste) - 2)\r\n    End If\r\n    GetAutorenliste = Autorenliste\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<p>Diese Funktion liefert eine Zeichenkette zur&uuml;ck, in der alle Autoren eines Werks nacheinander aufgef&uuml;hrt sind.<\/p>\n<p>&uuml;ber den Parameter LiteraturID teilen Sie der Funktion mit, f&uuml;r welchen Datensatz die Autorenliste zusammengestellt werden soll, w&auml;hrend Sie &uuml;ber den Parameter Format das Ausgabeformat einstellen. Die Funktion kennt zwei Formate, die im Quellcode 2 im Funktionskopf dargestellt sind.<\/p>\n<p>Die Funktion ermittelt zun&auml;chst &uuml;ber die Abfrage qryAutorenProLiteratur alle Autoren einer bestimmten LiteraturID. Die Abfrage enth&auml;lt die Felder LiteraturID, Vorname und Nachname.<\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die Prozedur alle Ergebnisdatens&auml;tze in einer Schleife, liest die Namen der Autoren aus und f&uuml;gt sie je nach gew&auml;hltem Format in der Variablen Autorenliste aneinander. Am Ende wird noch das &uuml;bersch&uuml;ssige Komma bzw. Semikolon entfernt.<\/p>\n<p>In der Abfrage rufen Sie die Funktion dann wie folgt in einer neuen Spalte mit dem Namen Autoren auf:<\/p>\n<pre>Autoren: getAutorenliste _    ([tblLiteratur].[LiteraturID];2)<\/pre>\n<p>Als Datensatzherkunft f&uuml;r das Listenfeld tragen Sie nun die Abfrage ein. Damit beim &ouml;ffnen des Suchen-Dialogs zun&auml;chst keine Titel angezeigt werden, verwenden Sie die folgende SQL-Anweisung als Datensatzherkunft:<\/p>\n<pre>SELECT * FROM qrySuchergebnis WHERE LiteraturID = 0;<\/pre>\n<p>Stellen Sie zum Schluss noch die Spaltenanzahl und die Spaltenbreiten des Listenfeldes ein.<\/p>\n<pre>Private Sub btnSuchen_Click()\r\n    Dim SQL As String\r\n    Dim Condition As String\r\n    If Nz(Me!txtTitel, \"\") &lt;&gt; \"\" Then Condition = Condition & \"(Titel Like \"\"*\" _        & Me!txtTitel & \"*\"\" OR UnterTitel=\"\"*\" & Me!txtTitel & \"*\"\") AND \"\r\n''... SQL-Anweisung um andere Kriterien erweitern\r\n    If Right(Condition, 5) = \" AND \" Then\r\n        Condition = Left(Condition, Len(Condition) - 5)\r\n    End If\r\n    SQL = \"SELECT * FROM qrySuchergebnis\"\r\n    If Len(Condition) &gt; 0 Then SQL = SQL & \" WHERE \" & Condition\r\n    SQL = SQL & \" ORDER BY Titel;\"\r\n    Me!lstErgebnisliste.RowSource = SQL\r\n    Me!lstErgebnisliste.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p><IMG height=\"357\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic010.png\" width=\"490\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Das Suchergebnis<\/span><\/b><\/p>\n<h3>Starten der Suche<\/h3>\n<p>Die Suche wird &uuml;ber die Schaltfl&auml;che btnSuchen gestartet. Quellcode 3 zeigt deutlich, wie die Suche funktioniert.<\/p>\n<h3>Hinweis<\/h3>\n<p>Aus Platzgr&uuml;nden kann leider nicht der komplette Quellcode abgedruckt werden. Sie finden aber alle im Beitrag beschriebenen Prozeduren und Funktionen in den Beispieldatenbanken Literaturmanager97.mdb und Literaturmanager2000.mdb auf der Heft-CD. <\/p>\n<p>Die Prozedur verwendet die Abfrage qrySuchergebnis, die auch schon f&uuml;r die Datenherkunft des Ergebnis-Listenfeldes benutzt wurde. Allerdings wird hier nicht mit der Bedingung LiteraturID=0 gearbeitet, sondern im ersten Programmblock eine wesentlich ausf&uuml;hrlichere Bedingung zusammengestellt.<\/p>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst bei jedem einzelnen Eingabefeld, ob ein Wert eingegeben oder ausgew&auml;hlt wurde. Ist dies f&uuml;r ein Feld der Fall, setzt sie den WHERE-Teil der SQL-An-weisung f&uuml;r dieses Feld zusammen. Bei Textfeldern erfolgt eine Like-Suche mit dem Platzhalter &#8222;*&#8220; am Anfang und am Ende des Textes. Bei Kombinationsfeldern wird direkt nach der Prim&auml;rschl&uuml;ssel-ID gesucht. F&uuml;r das Erscheinungsjahr kann ein Wertebereich eingegeben werden, der mit der SQL-Anweisung &#8222;BETWEEN &#8230; AND &#8230;&#8220; abgefragt wird.<\/p>\n<p>Alle Einzelbedingungen werden mit UND verkn&uuml;pft.<\/p>\n<p>Nachdem die SQL-Anweisung komplett erstellt wurde, wird sie dem Listenfeld als neue Datensatzherkunft zugewiesen. Als Letztes aktualisiert die Prozedur mit der Requery-Methode die Daten des Listenfeldes. Bild 10 zeigt das Suchergebnis der Abfrage.<\/p>\n<pre>Public Sub Literatur&ouml;ffnen(LiteraturID)\r\n    Dim rstLiteratur As Recordset\r\n    If Not IsLoaded(\"frmLiteratur\") Then\r\n        DoCmd.OpenForm \"frmLiteratur\"\r\n    End If\r\n    Set rstLiteratur = Forms!frmLiteratur.RecordsetClone\r\n    rstLiteratur.FindFirst \"LiteraturID=\" & LiteraturID\r\n    If Not rstLiteratur.NoMatch Then\r\n        Forms!frmLiteratur.Bookmark = rstLiteratur.Bookmark\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Stellen Sie die Eigenschaft Standard der Schaltfl&auml;che btnSuchen auf Ja ein. Dadurch k&ouml;nnen Sie mit der Return-Taste jederzeit die Suche starten, ohne zun&auml;chst den Fokus auf die Schaltfl&auml;che legen zu m&uuml;ssen. <\/p>\n<h3>&ouml;ffnen eines Eintrags<\/h3>\n<p>Nach der Anzeige des Ergebnisses im Listenfeld k&ouml;nnen Sie mittels Doppelklick auf einen Eintrag oder &uuml;ber die &ouml;ffnen-Schaltfl&auml;che das Literatur-Formular mit dem entsprechenden Werk anzeigen. Dazu ist der Schaltfl&auml;che btn&ouml;ffnen der Programmcode aus Quellcode 4 zugeordnet.<\/p>\n<pre>Private Sub btn&ouml;ffnen_Click()\r\n    Dim LiteraturID As Long\r\n    LiteraturID = Nz(Me!lstErgebnisliste, 0)\r\n    If LiteraturID &lt;&gt; 0 Then\r\n        Literatur&ouml;ffnen LiteraturID\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<p>Dieser ermittelt zun&auml;chst den Wert des Listenfeldes. Falls ein Eintrag ausgew&auml;hlt ist, ruft der Code die Prozedur Literatur&ouml;ffnen auf.<\/p>\n<p>Den Prozeduraufbau k&ouml;nnen Sie Quellcode 5 entnehmen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Das &ouml;ffnen des Literatur-Formulars mit gleichzeitiger Positionierung auf ein bestimmtes Werk ist deshalb in eine gesonderte Prozedur ausgegliedert, da diese Funktion noch an anderen Stellen ben&ouml;tigt wird und so nur einmal programmiert werden muss. <\/p>\n<p>Falls das Literatur-Formular noch nicht angezeigt wird, &ouml;ffnet die Prozedur das Formular. Anschlie&szlig;end wird wie bei der Schnellsuche mit der FindFirst-Methode der Datensatz mit der entsprechenden LiteraturID gesucht und &uuml;ber die Bookmark-Zuweisung angezeigt. <\/p>\n<h3>Schlie&szlig;en des Formulars<\/h3>\n<p>Das Schlie&szlig;en des Formulars mittels der Schaltfl&auml;che btnSchlie&szlig;en wird &uuml;ber die folgende Anweisung ausgef&uuml;hrt:<\/p>\n<pre>DoCmd.Close acForm, _    Me.Name<\/pre>\n<h3>Praxis-Tipp<\/h3>\n<p>Stellen Sie die Eigenschaft Abbrechen der Schlie&szlig;en-Schaltfl&auml;che auf Ja, um den Suchen-Dialog &uuml;ber die ESC-Taste schlie&szlig;en zu k&ouml;nnen. <\/p>\n<p>Eine weitere Funktion in der Literaturverwaltung stellt die Bewertung von B&uuml;chern, Zeitschriften oder bestimmten Artikeln dar. So k&ouml;nnen sich andere Benutzer bereits vor dem Lesen einen Eindruck vom Inhalt und der Qualit&auml;t des Werks verschaffen. <\/p>\n<p><IMG height=\"303\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic011.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Das Rezensionen-Formular in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Nat&uuml;rlich spiegeln die Rezensionen immer den subjektiven Eindruck der fremden Leser wider. Man sollte sich daher nicht nur auf diese verlassen. Allerdings k&ouml;nnen aussagekr&auml;ftige Rezensionen bei der Vorauswahl geeigneter Literatur helfen und somit viel Zeit ersparen.<\/p>\n<p><b>Die Rezensionsliste imLiteratur-Formular<\/b><\/p>\n<p>Die Rezensionen werden im Literatur-Formular auf einer eigenen Registerseite in einem Unterformular angezeigt (siehe Bild 11). <\/p>\n<h3>Anlegen der Datenbasis<\/h3>\n<p>Legen Sie dazu ein neues Formular mit dem Namen frmRezensionen an. Als Datenbasis verwenden Sie eine Abfrage, die die Tabellen tblRezensionen, tblBenutzer und tblWertungen beinhaltet (siehe Bild 12).<\/p>\n<p>Da die Rezensionsliste die Wertung in Form einer Grafik darstellen soll, muss die Grafik im Formular &uuml;ber ein gebundenes OLE-Objektfeld angezeigt werden. Nur auf diese Art ist es m&ouml;glich, in einem Endlosformular f&uuml;r verschiedene Datens&auml;tze unterschiedliche Grafiken einzublenden.<\/p>\n<p>Deshalb sind die Grafiken in der Tabelle tblWertungen in einem OLE-Objekt-Feld hinterlegt und k&ouml;nnen so in der Abfrage in die Datensatzherkunft des Formulars aufgenommen werden.<\/p>\n<h3>Einf&uuml;gen der Wertungsbilder<\/h3>\n<p>Um die Wertungsgrafiken in die Tabelle tblWertungen aufzunehmen, &ouml;ffnen Sie diese in der Datenblattansicht. Klicken Sie anschlie&szlig;end mit der rechten Maustaste auf das erste OLE-Datenfeld und w&auml;hlen Sie den Kontextmen&uuml;punkt Objekt einf&uuml;gen aus (siehe Bild 13).<\/p>\n<p>Markieren Sie anschlie&szlig;end im Dialog Objekt einf&uuml;gen die Option Aus Datei erstellen.<\/p>\n<p>Klicken Sie auf die Schaltfl&auml;che Durchsuchen und w&auml;hlen Sie die passende Grafik-Datei aus. Wiederholen Sie diesen Vorgang f&uuml;r alle f&uuml;nf Wertungszahlen.<\/p>\n<p><IMG height=\"260\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic012.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12:  Datenherkunft f&uuml;r das Unterformular frmRezensionen<\/span><\/b><\/p>\n<p><IMG height=\"298\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic013.png\" width=\"451\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 13:  Einf&uuml;gen einer Grafik in ein OLE-Objekt-Feld<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Sie k&ouml;nnen die Grafiken auch &uuml;ber die Zwischenablage in die Tabelle einf&uuml;gen. Markieren Sie dazu einfach die Grafik in Ihrem Grafikprogramm und w&auml;hlen Sie den Men&uuml;befehl Bearbeiten\/Kopieren aus. In der Tabelle k&ouml;nnen Sie dann den Kontextmen&uuml;befehl Einf&uuml;gen verwenden, um die Grafik in die Tabelle zu kopieren. <\/p>\n<h3>Hinzuf&uuml;gen der Datenfelder<\/h3>\n<p>Nachdem Sie die Datenbasis definiert haben, k&ouml;nnen Sie die Datenfelder in das Formular einf&uuml;gen. Platzieren Sie dazu die Felder Benutzer, Rezensionsdatum, Rezensionstext und WertungBild im Formular und passen Sie das Layout Ihren Vorstellungen an.<\/p>\n<p>Die Rezensionen sollen nicht direkt im Formular, sondern in einem eigenen Dialog eingegeben werden. Die Datenfelder m&uuml;ssen deshalb gesperrt werden. Stellen Sie dazu bei allen Steuerelementen die Eigenschaften Gesperrt auf Ja und Aktiviert auf Nein.<\/p>\n<p>Lediglich beim Feld Rezensionstext muss die Eigenschaft Aktiviert auf Ja stehen bleiben, da die Bildlaufleisten des Steuerelements sonst ebenfalls deaktiviert werden und ein l&auml;ngerer Text nicht mehr gelesen werden kann.<\/p>\n<p><IMG height=\"428\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic014.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 14:  Die Rezensionsliste im Formularlayout<\/span><\/b><\/p>\n<h3>Formulareigenschaften einstellen<\/h3>\n<p>Damit die Rezensionen als Endlosliste erscheinen, m&uuml;ssen die Datensatzmarkierer und Navigationsschaltfl&auml;chen ausgeschaltet werden. In Tabelle 3 finden Sie alle Eigenschaften, die Sie f&uuml;r das Formular frmRezensionen einstellen sollten.<\/p>\n<p>Als Ergebnis (siehe Bild 14) erhalten Sie eine Liste mit allen Rezensionen absteigend nach Datum sortiert. Die Wertung wird hier durch Stifte symbolisiert.<\/p>\n<p><IMG height=\"368\" src=\"..\/fileadmin\/_temp_\/{ACCEBE37-24C3-4C60-8FEA-E8E926A43711}\/pic015.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 15:  Verfassen von neuen Rezensionen<\/span><\/b><\/p>\n<p>Einmal verfasste Rezensionen lassen sich nicht mehr bearbeiten oder l&ouml;schen.<\/p>\n<p><b>Eingabe von neuen Rezensionen<\/b><\/p>\n<p>Da Rezensionen im Formular selbst nicht bearbeitet oder eingef&uuml;gt werden k&ouml;nnen, erfolgt das Verfassen von neuen Rezensionen &uuml;ber einen eigenen Dialog.<\/p>\n<h3>Anlegen des Dialog-Formulars<\/h3>\n<p>Erstellen Sie zun&auml;chst ein neues Formular mit dem Namen frmRezensionenDialog und stellen Sie die Formulareigenschaften wie in Tab. 4 ein.<\/p>\n<p>F&uuml;gen Sie anschlie&szlig;end eine Optionsgruppe ogrWertung mit f&uuml;nf Optionsfeldern, ein Textfeld txtRezensionstext und zwei Schaltfl&auml;chen btnOK und btnAbbrechen hinzu. Au&szlig;erdem k&ouml;nnen Sie die Wertungsgrafiken anstelle der Optionsfeld-Beschriftungen neben den Optionsfeldern platzieren (siehe Bild 15).<\/p>\n<p>Der Quellcode des Dialog ist sehr &uuml;bersichtlich. Er beschr&auml;nkt sich auf die Anweisungen zum Schlie&szlig;en oder Verstecken des Dialogs, da die Steuerung des Dialogs beim Aufruf und nicht im Dialog selbst erfolgt. Die Prozedur f&uuml;r die OK-Schaltfl&auml;che hat folgendes Aussehen:<\/p>\n<pre>Private Sub btnOK_Click()\r\n    Me.Visible = False\r\nEnd Sub<\/pre>\n<p>Auch die Prozedur f&uuml;r die Abbrechen-Schaltfl&auml;che enth&auml;lt nur einen Befehl:<\/p>\n<pre>Private Sub btnAbbrechen_Click()\r\n    DoCmd.Close acForm, Me.Name\r\nEnd Sub<\/pre>\n<table border=1>\n<tr>\n<td>\n<p><b>Eigenschaft<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Standardansicht<\/p>\n<\/td>\n<td>\n<p>Endlosformular<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bearbeiten zulassen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>L&ouml;schen zulassen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Anf&uuml;gen zulassen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Daten eingeben<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bildlaufleisten<\/p>\n<\/td>\n<td>\n<p>Nur vertikal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Datensatzmarkierer<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Navigationsschaltfl&auml;chen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Trennlinie<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 3: Eigenschaften des Formulars frmRezensionen<\/b><\/p>\n<p>Beim Klicken auf OK wird das Formular &uuml;ber die Eigenschaft Visible nur ausgeblendet, sodass noch auf die Inhalte &#8211; also die Wertung und den Text &#8211; des Dialogs zugegriffen werden kann. Ein Klick auf die Schaltfl&auml;che Abbrechen schlie&szlig;t den Dialog.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Eigenschaft<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Bildlaufleisten<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Datensatzmarkierer<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Navigationsschaltfl&auml;chen<\/p>\n<\/td>\n<td>\n<p>Nein<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Gr&ouml;&szlig;e anpassen<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Automatisch zentrieren<\/p>\n<\/td>\n<td>\n<p>Ja<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Rahmenart<\/p>\n<\/td>\n<td>\n<p>Dialog<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 4: Eigenschaften des Formulars frmRezensionenDialog<\/b><\/p>\n<h3>Aufruf des Dialogs<\/h3>\n<p>Der Aufruf des Rezensionen-Dialogs erfolgt aus dem Literatur-Formular heraus &uuml;ber die Schaltfl&auml;che btnNeueRezension. Die Prozedur der Schaltfl&auml;che geht in mehreren Schritte vor, um eine neue Rezension anzulegen (s. Quellcode 6).<\/p>\n<p>Zun&auml;chst &ouml;ffnet sie das soeben erstellte Dialog-Formular frmRezensionenDialog. Wichtig ist hierbei, dass Sie den optionalen Parameter WindowMode auf acDialog setzen. Dadurch wird der Programmcode innerhalb der Prozedur so lange angehalten, bis der Dialog geschlossen oder unsichtbar gemacht wird.<\/p>\n<p>Klickt der Anwender nun auf OK oder Abbrechen, wird der Programmcode weiter ausgef&uuml;hrt. Die Prozedur pr&uuml;ft dann, ob der Dialog zwar versteckt, aber noch ge&ouml;ffnet ist. In diesem Fall hat der Anwender auf OK geklickt und die Daten im Dialog m&uuml;ssen verarbeitet werden.<\/p>\n<p>Die Prozedur f&uuml;gt dann eine INSERT-INTO-SQL-Anweisung zusammen, die die Wertung, den Rezensionstext, den aktuellen Benutzer und das Anlagedatum in der Tabelle tblRezensionen speichert. Der Zugriff auf den Dialog erfolgt dabei &uuml;ber die entsprechenden Steuerelemente des unsichtbaren Formulars.<\/p>\n<p>&uuml;ber die Execute-Methode des Datenbank-Objekts wird dann die SQL-Anweisung ausgef&uuml;hrt und der Datensatz eingef&uuml;gt.<\/p>\n<p>Der Rezensionen-Dialog wird nun geschlossen. Abschlie&szlig;end fragt die Prozedur den Dateninhalt des Unterformulars neu ab, um die Anzeige zu aktualisieren und den neuen Eintrag im Formular anzuzeigen.<\/p>\n<p>In diesem Beitrag haben Sie den Aufbau, die Eingabe und die Suchfunktionen der Literaturdatenbank kennen gelernt. Ferner haben Sie erfahren, wie Sie Rezensionen mit Grafiken optisch aufwerten k&ouml;nnen.<\/p>\n<pre>Private Sub btnNeueRezension_Click()\r\n    Dim db As Database\r\n    Dim SQL As String\r\n    DoCmd.OpenForm \"frmRezensionenDialog\", acNormal, , , , acDialog\r\n    If IsLoaded(\"frmRezensionenDialog\") = True Then\r\n        Set db = CurrentDb()\r\n        SQL = \"INSERT INTO tblRezensionen (LiteraturID,BenutzerID,\"\r\n        SQL = SQL & \" Rezensionstext,WertungID,Rezensionsdatum)\"\r\n        SQL = SQL & \" Values (\" & Me!LiteraturID & \", \" & GetCurrentUserID()\r\n        SQL = SQL & \", \"\"\" & Forms!frmRezensionenDialog!txtRezensionstext\r\n        SQL = SQL & \"\"\", \" & Forms!frmRezensionenDialog!ogrWertung\r\n        SQL = SQL & \", \" & SQLDatum(Now) & \")\"\r\n        db.Execute SQL\r\n        DoCmd.Close acForm, \"frmRezensionenDialog\"\r\n        Me!subRezensionen.Requery\r\n    Else\r\n        ''Es wurde auf Abbrechen geklickt\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p>Ein weiterer wichtiger Teil einer Literaturverwaltung sind benutzerdefinierte Literaturlisten, die mittels Berichten oder Word mit OLE-Automation sinnvoll genutzt werden k&ouml;nnen.<\/p>\n<p>Mit einer solchen Einrichtung ersparen Sie sich m&uuml;hselige Tipperei, um beispielsweise die Literaturverweise f&uuml;r Ver&ouml;ffentlichungen wie Studien, Marktforschungsergebnisse usw. zu erstellen.<\/p>\n<p>Sie k&ouml;nnen damit einfach die ohnehin bereits vorhandenen Eintr&auml;ge der Datenbank ausw&auml;hlen und die gew&uuml;nschte Liste erstellen lassen. Diese sinnvolle Erweiterung wird neben anderen interessanten Features in der kommenden Ausgabe von Access im Unternehmen vorgestellt.<\/p>\n<p>F&uuml;r die Literaturverwaltung sind jedoch noch zahlreiche Erweiterungen denkbar. So k&ouml;nnte man beispielsweise ein Konfigurationsmodul f&uuml;r die Ausgabe des Literaturanhangs entwickeln, in dem Vorlagen verschiedener Formate gespeichert werden k&ouml;nnen.<\/p>\n<p>Au&szlig;erdem lie&szlig;e sich ein Ausleihmodul mit Leih- und R&uuml;ckgabefristen in die Datenbank integrieren. Dazu k&auml;me der Ausdruck von Barcodeaufklebern f&uuml;r alle Literatureintr&auml;ge und f&uuml;r die Benutzerausweise.<\/p>\n<p>Auch das Modul f&uuml;r die Verteilerlisten kann noch ausgebaut werden. Zur Zeit muss der Verteiler manuell erfasst werden, was ebenfalls mit einem Assistenten und mit Vorlagen standardisiert werden k&ouml;nnte.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>LiteraturManager00.mdb<\/p>\n<p>LiteraturManager97.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/0BF94FCF-C8AC-413C-9EAE-FC3E4E7A48D6\/aiu_67.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zur Organisation von B&uuml;chern und Zeitschriften in Unternehmen bietet sich eine Literaturverwaltung an, in der die Literatur nicht nur erfasst, sondern auch weiterverarbeitet werden kann. Dazu z&auml;hlt beispielsweise das automatische Erstellen von Literatur- und Signaturlisten. Der folgende Beitrag beschreibt eine Datenbank, die besondere Zusatzfunktionen enth&auml;lt, mit denen Sie den Nutzwert f&uuml;r die Anwender wesentlich erh&ouml;hen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662002,66032002,44000027],"tags":[],"class_list":["post-55000067","post","type-post","status-publish","format-standard","hentry","category-662002","category-66032002","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Literaturverwaltung - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Literaturverwaltung\" \/>\n<meta property=\"og:description\" content=\"Zur Organisation von B&uuml;chern und Zeitschriften in Unternehmen bietet sich eine Literaturverwaltung an, in der die Literatur nicht nur erfasst, sondern auch weiterverarbeitet werden kann. Dazu z&auml;hlt beispielsweise das automatische Erstellen von Literatur- und Signaturlisten. Der folgende Beitrag beschreibt eine Datenbank, die besondere Zusatzfunktionen enth&auml;lt, mit denen Sie den Nutzwert f&uuml;r die Anwender wesentlich erh&ouml;hen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-10T20:10:07+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Literaturverwaltung\",\"datePublished\":\"2021-02-10T20:10:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/\"},\"wordCount\":3814,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/212aa357cb77446b83535334be9ad5d6\",\"articleSection\":[\"2002\",\"3\\\/2002\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/\",\"name\":\"Literaturverwaltung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/212aa357cb77446b83535334be9ad5d6\",\"datePublished\":\"2021-02-10T20:10:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/212aa357cb77446b83535334be9ad5d6\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/212aa357cb77446b83535334be9ad5d6\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Literaturverwaltung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Literaturverwaltung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Literaturverwaltung - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/","og_locale":"de_DE","og_type":"article","og_title":"Literaturverwaltung","og_description":"Zur Organisation von B&uuml;chern und Zeitschriften in Unternehmen bietet sich eine Literaturverwaltung an, in der die Literatur nicht nur erfasst, sondern auch weiterverarbeitet werden kann. Dazu z&auml;hlt beispielsweise das automatische Erstellen von Literatur- und Signaturlisten. Der folgende Beitrag beschreibt eine Datenbank, die besondere Zusatzfunktionen enth&auml;lt, mit denen Sie den Nutzwert f&uuml;r die Anwender wesentlich erh&ouml;hen.","og_url":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-10T20:10:07+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Literaturverwaltung","datePublished":"2021-02-10T20:10:07+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/"},"wordCount":3814,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6","articleSection":["2002","3\/2002","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/","url":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/","name":"Literaturverwaltung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6","datePublished":"2021-02-10T20:10:07+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/212aa357cb77446b83535334be9ad5d6"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Literaturverwaltung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Literaturverwaltung"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000067"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000067\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}