Supportnet / Forum / Datenbanken
Inhaltsverzeichniss in Access Bericht
Frage
Hallo,
Es gibt viele Interessante Forumeinträge zum Thema Inhaltsverzeichniss in Accessberichten aber leider hat keine geholfen :(
Ich habe folgendes Problem:
Ein Bericht von mir hat einen Mehrseitigen Berichtskopf, im Detailbereich werden meine Daten aus Abfrage angezeigt, und im Berichtsfuß noch mal ein Mehrseitiger Bereich.
Nun soll ein Inhaltsverzeichnis im Berichtskopf eingebaut werden.
Meine Idee dazu:
Ich füge zu jeder "Überschrift" einen versteckten Marker (Textfeld) mit eindeutigem Namen hinzu (Kat1, Kat2,...). Als Steuerelementinhalt: =[Seite].
Dazu eine temporäre Tabelle (tblInhalt) wo der Name des Markers + die dazugehörige Seitennummer reinsoll.
Den Inhalt der Tabelle tblInhalt dann in einen extra Bericht (repInhalt) verpackt als Unterbericht in den Berichtskopf des eigentlichen Berichts
Im Bericht selber wird folgender Code ausgeführt:
[code]
Private Sub Berichtskopf_Format (Cancel As Integer, FormatCount As Integer)
Dim sqlindex
Dim ctl As Control
Dim n, a, b As String
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Then
a = ctl.Name
n = Mid(a, 1, 3)
If n = "Kat" Then
b = ctl.Value
sqlindex = "INSERT INTO tblInhalt (Marker,Seite) SELECT " _
& Chr(34) & a & Chr(34) & "," & Chr(34) & b & Chr(34) & ";"
CurrentDb.Execute sqlindex, dbfailonerror
End If
End If
Next ctl
End Sub
[/code]
Ich hab mir also überlegt "suche im Bericht alle Textfelder die mit Name "Kat" beginnen und schreibe den gesamten Namen und den Wert des Textfeldes in die Tabelle tblInhalt"
In der Theorie ganz nett nur in der Praxis ein wenig verzwickt, da der Code mehrere male durchläuft und somit "Kat1" mit Seite 1,2,3,... in die Tabelle schreibt.
Mir sind leider die Ideen ausgegangen und wahrscheinlich lese ich immer wieder über den sicherlich offensichtlichen Fehler drüber.
Irgend Jemand eine Idee wie ich das Lösen kann?
Besten Dank im Voraus für eure Bemühungen
Antwort 1 von Roadrunner90
Hallo,
ich definiere mir für solche Aktionen einen Merker, den setze ich nach dem 1. Durchlauf auf 1 und führe die Aufbereitung nur duche wenn Merker <> 1
Gruß Rudolf
ich definiere mir für solche Aktionen einen Merker, den setze ich nach dem 1. Durchlauf auf 1 und führe die Aufbereitung nur duche wenn Merker <> 1
Gruß Rudolf
Antwort 2 von Teddy7
Wenn Du die temporäre Tabelle nur da füllst, wo die Überschrift angelistet wird, müßte es gehen.
Also z.B. Du hast Deinen Bericht gruppiert nach Artikel.
Dann hast Du einen Bereich Artikel-Kopf und Artikel-Fuß.
Im Bereich Artikel-Kopf könntest Du dann im Formatieren-Ereignis die aktuelle Seitenzahl und den Artikeltext (also die Überschrift) in die temporäre Tabelle schreiben.
Im Berichtsfuß kannst Du dann den Unterbericht im Berichtskopf aktualisieren lassen
Bericht!Berichtskopf!Unterberichtsname!requery
Gruß
Teddy
Also z.B. Du hast Deinen Bericht gruppiert nach Artikel.
Dann hast Du einen Bereich Artikel-Kopf und Artikel-Fuß.
Im Bereich Artikel-Kopf könntest Du dann im Formatieren-Ereignis die aktuelle Seitenzahl und den Artikeltext (also die Überschrift) in die temporäre Tabelle schreiben.
Im Berichtsfuß kannst Du dann den Unterbericht im Berichtskopf aktualisieren lassen
Bericht!Berichtskopf!Unterberichtsname!requery
Gruß
Teddy