Hallo!
Ich habe einen Bericht, der auf einer Abfrage basiert. Da der Bericht auch viele Unterbericht enthält, schafft zumindest mein Rechner nicht alle Datensätze auf einmal, sondern immer nur in kleinen Häppchen. Das ist aber noch nicht das Problem.
Um die Anzahl der Datensätze zu reduzieren, stelle ich Bedingungen in der genannten Abfrage. Wenn ich dort die automatisch generierte ID filter (also ID < 100 etc.), kann ich mir ca. 100 Datensätze auf einmal anzeigen lassen. Aber die ID gibt mir nicht die gewünscht Reihenfolge an, dafür habe ich ein extra Feld Sortierreihenfolge, in der eine mehrstellige Zahl steht (anfangs war das Feld als Text definiert, aber auch nach der KOnvertiertung in ein Zahlenfeld hat sich am Problem nichts geändert). Das Feld ist auch indiziert. In der Abfrage funktioniert auch noch alles wuderbar, aber wenn ich den Bericht öffne, kommt, wenn ich mehr als 10 Datensätze so gefiltert habe, immer die Fehlermeldung:
"Dieser Ausdruck wurde falsch eingegeben, oder er ist zu komplex, um ausgewertet zu werden. Beispielsweise kann ein numerischer Ausdruck zu viele komplizierte Elemente enthalten. Vereinfachen Sie den Ausdruck, indem Sie Teile des Ausdrucks Variablen zuweisen."
Ich weiß jetzt aber nicht, wie ich darauf reagieren soll. Mir ist einfach nicht klar, warum er bei der Sortierreihenfolge viel früher Probleme hat als bei der ID. Kann mir das jemand erklären bzw. noch besser eine Lösung geben? Wäre sehr dankbar!
Hallo,
" Da der Bericht auch viele Unterbericht enthält"
über wie viele reden wir da?
Warum gibt es überhaupt diese (vielen) Unterberichte?
Wie sehen die beteiligten Tabellen aus (Aufbau, Felder, Datentypen)
Gibt es OLE-Felder in den Tabellen, die im Bericht verwendet werden?
Wie lautet die SQL-String des Hauptberichtes?
Wie sind die Unterberichte verknüpft und wie lautet deren Datenherkunft?
Wie ist die Ausstattung des Rechners?
Welche Access-Version ist im Spiel?
Oi, so viele Fragen! :-)
Ich benutze Access 2012 unter WIndwos 7 (64bit) und der Rechner hat einen i7-2670QM-Prozessor, 8GB Ram.
Es sind 12 Unterberichte. ich arbeite an einer historischen Dissertation und habe die Lebensläufe von mehreren tausend Personen in einer relationalen Datenbank gesammelt. Für jeden Aspekt - Studium, Beruf, städtisches Amt, kirchliche Weihen, Pründe ... - gibt es einen eigenen Unterbericht (Im Hauptbericht steht der Name und die Lebensdaten etc. der Person, zu den Unterberichten besteht jeweils eine n-m Beziehung). Nahcdem es recht viele sind, ist es natürlich sehr schwer, hier alle Tabellen und deren Strukturen wiederzugeben. Verbunden mit dem Hauptbericht sind alle über die ID des Hauptberichtes. Im Bericht werden glaube ich lediglich Text- und Zahlenfelder verwendet, evtl. ein-zwei Memofelder.
Der SQL-Code der Abfrage für den Hauptbericht lautet:
SELECT Person.ID, Person.Sortierreihenfolge, Person.Vorname, "\item \label{id: " & [Person].[ID] & "}" AS ID2, "\textbf{" & [Vorname] & " " & [Nachname] & "} " AS Name, "\hfill " & [KategorieGesamt] AS Kategorien, Lebensdaten1.LD_Grab, LatexEltern.Vater, LatexEltern.Mutter, PND.PND3, "\textbf{" & [Vorname] & " " & [Nachname] & "} " AS NameFett, [Vorname] & " " & [Nachname] AS NameNormal, "\textit{" & [Vorname] & " " & [Nachname] & "} " AS NameKursiv, "\textsc{" & [Vorname] & " " & [Nachname] & "} " AS NameKap, Person.[Varianten Nachname], IIf(IsNull([Varianten Nachname]),"","\textit{" & [Varianten Nachname] & "}\\") AS Namensvarianten
FROM (((ID_NbgStud_Oder_Gel INNER JOIN (PND INNER JOIN Person ON PND.ID = Person.ID) ON ID_NbgStud_Oder_Gel.ID = Person.ID) INNER JOIN Kategorien_Personen_ohne_Klammern ON Person.ID = Kategorien_Personen_ohne_Klammern.ID) INNER JOIN Lebensdaten1 ON Person.ID = Lebensdaten1.ID) INNER JOIN LatexEltern ON Person.ID = LatexEltern.ID
WHERE (((Person.Sortierreihenfolge)<10))
ORDER BY Person.Sortierreihenfolge;
Ich hoffe, die Daten helfen weiter, ansonsten gerne nochmal nachfragen, ich bitte schließlich um Hilfe.
Hallo,
die Unterberichte halte ich komplett für überflüssig. Das ist ein Fall für gruppierte Bericht, es liegt ja ein normalisierter Aufbau vor.
Ein gruppierter Bericht ist um ein vielfaches einfacher.
Hmm, ich muss zugeben, dass ich bezüglich der Berichte nicht sehr erfahren bin, hab daher meine Zweifel, ob das in meinem Fall wirklich klappen würde. Ich habe nämlich für die Unterbericht nochmals eigene Abfragen erstellt, in denen die notwendigen Daten gefiltert, sortiert und manipuliert werden (Ich exportiere den Bericht nämlich zunächst nach Word und dann in LaTex, deswegen füge ich Formatierungsbefehle wie \texbf{} hinzu, die aber von Wenn-Funktionen abhängig sind). Zudem muss man ja glaube ich alle Daten in einer Abfrage vereinen, das würde bei so vielen Tabellen doch auch wieder den Rechner mehr oder weniger lahm legen, oder? Aber vielleicht sehe ich die gruppierten Bericht auch nur falsch?
Hallo,
es ist natürlich recht schwierig, diese komplexe Situation genau zu durchblicken...
1) sind alle in der gezeigten Abfrage verknüpften Tabellen für den Hauptbericht an sich nötig?
2) Die Verwendung von "Name" als Alias-Name halte ich für kritisch
3) Sind die Datentypen der verknüpfenden Schlüsselfelder (auch die zu den Unterberichten) zueinander identisch?
Vielleicht ist auch eine sukzessive Annäherung an das Problem sinnvoll: Im Hauptbericht nacheinander die Unterberichte entweder allesamt neu hinzufügen (oder nacheinander entfernen) und "dazwischen" zu testen.
Das mit den Unterberichten schrittweise rausnehmen hatte ich auch bereits probiert, da hat sich nicht viel geändert. Aber ich habe jetzt eine andere Lösung gefunden, die aber zeigt, dass das Problem irgendwie mit der Sortierung/Filterung der Zahlen zusammenhängt. Aber ich konnte es jetzt anders lösen.
Nur für die, die es interessiert: Ich wollte die Liste nach dem Nachnamen sortieren. Da es sich aber um Personennamen aus dem Mittelalter handelt und die es mit der Rechtschreibung noch nicht so hatten, sortiert man die Namen nicht einfach nach dem heutigen Alphabet, sondern nimmt Veränderungen nach dem Lautwert vor, so ist bspw. b=p, d=t etc. Ursprünglich habe ich deswegen die Buchstaben durch Zahlen ersetzt (a=01, b=02, ... p=02 etc.) und wollte danach sortieren (deswegen zunächst auch ein textfeld, weil so die Zeichenlänge des Nachnamens keine Rolle spielt). Gerade ist mir eingefallen, dass man es auch einfach machen könnte und habe die Buchstaben nicht durch Zeichen ersetzt, sondern einfach p durch b etc. Manchmal steht man auf dem Schlauch! Aus mir nicht ganz erklärbaren Gründen macht es dem Conmputer nun wesentlich weniger Probleme, wenn ich nach dem Anfangsbuchstabe filtere. Zumindest im ersten Versuch hat er jetzt gleich 370 Datensätze auf einmal geschafft. Ich habe keine Ahnung, warum er mit dem Buchstaben weniger Probleme hat, aber ich bin erstmal froh!
Aber auf jeden Fall danke an alle, die mir beim Problem geholfen haben!!! ;D
Hallo,
"Zahlen ersetzt (a=01, b=02, ... p=02 etc.) "
01, 02 sind aber keine Zahlen, sondern Ziffern, die als Text behandelt werden.
Vermutlich ist da der Hinweis zu den Datentypen "zielführend" ...