Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gruppen in Berichten

32 views
Skip to first unread message

Andreas Bruhn

unread,
Jan 15, 2008, 6:20:23 PM1/15/08
to
Hi allerseits,

ich habe hier eine Tabelle RechnungPos mit folgendem Aufbau:

POS ZEILE DAT TXT MNG WERT
1 1 14.01.08 blubber 5 100,00
1 2 14.01.08 blub-gebühr 10,23
1 3 14.01.08 zuschlag 123,45
2 1 14.01.08 fasel 3 1,00
2 2 14.01.08 fasel-x 7 45,20
1 1 15.01.08 blah 3 7,00
1 2 15.01.08 bliep 7 4,00
3 1 14.01.08 sesamstr. 1 99,00
3 2 14.01.08 sandmännchen 2 27,90

und ich hätte gerne folgenden Bericht (wenn er später als Unterbericht
nutzbar ist, würde das viel helfen):

DAT TXT MNG WERT
14.01.08 blubber 5 100,00
blub-gebühr 10,23
zuschlag 123,45
-------
233,68

14.01.08 fasel 3 1,00
fasel-x 7 45,20
-------
46,20

14.01.08 sesamstr. 1 99,00
sandmännchen 2 27,90
-------
126,90

15.01.08 blah 3 7,00
bliep 7 4,00
-------
11,00

Da ergeben sich ein paar Fragen bei mir:

* Wie gruppiere ich das Ganze im Bericht bzw. geht das überhaupt so
(die Daten direkt aus der Tabelle nehmen) oder wäre mir mit ein paar
SQL-Anweisungen besser geholfen?

* Wie bekomme ich die Zwischensummen pro Position? Ein Textfeld mit
'Steuerelementinhalt: WERT' und 'Laufende Summe: Über Gruppe' liefert
mir immer nur den ersten Wert jeder Gruppe (also z.B. 100,00 / 1,00 /
99,00 / 7,00) und summiert die dann auf (100,0 / 101,00 / 200,00 /
207,00).

Am Rand möchte ich auch noch seitenweise Zwischensummen und Überträge
auf der folgenden Seite erwähnen und dass es zu der Tabelle
RechnungPos (die auch noch eine Spalte Rechnungsnummer beinhaltet)
natürlich auch eine Tabelle Rechnungsempfänger gehört. Dort stehen
die Anschriften und die Rechnungsnummern (für die Beziehung zu den
Rechnungspositionen) drin.

Aber erstmal bereiten mir die Rechnungspositionen am meisten
Kopfschmerzen.

Normalisieren der Tabelle(n) ist eigentlich nicht möglich, die Daten
werden so aus einer hierarchischen Datenbank heraus in Access
reingeworfen und sollen dann dort zum Bericht verarbeitet werden.


Grüße,
Andreas

Doerthe Weber

unread,
Jan 16, 2008, 3:17:25 AM1/16/08
to
Hallo Andreas,

Andreas Bruhn schrieb:

Gruppierung über Dat und Pos

> * Wie bekomme ich die Zwischensummen pro Position? Ein Textfeld mit
> 'Steuerelementinhalt: WERT' und 'Laufende Summe: Über Gruppe' liefert
> mir immer nur den ersten Wert jeder Gruppe (also z.B. 100,00 / 1,00 /
> 99,00 / 7,00) und summiert die dann auf (100,0 / 101,00 / 200,00 /
> 207,00).

=Summe(Wert)
Wert ist allerdings ein ungünstiger Feldname, kann sein, dass Access da
streikt, weil es ein reserviertes Wort ist. Dann müsstest Du eine
Abfrage vorschalten, die das Feld Wert unter einen anderen Namen liefert

>
> Am Rand möchte ich auch noch seitenweise Zwischensummen und Überträge
> auf der folgenden Seite erwähnen und dass es zu der Tabelle
> RechnungPos (die auch noch eine Spalte Rechnungsnummer beinhaltet)
> natürlich auch eine Tabelle Rechnungsempfänger gehört. Dort stehen
> die Anschriften und die Rechnungsnummern (für die Beziehung zu den
> Rechnungspositionen) drin.

Für die Zwischensummen und Überträge schau doch mal in der FAQ
(www.donkarl.com) unter 5.7 nach.

Gruß
Doerthe

Andreas Bruhn

unread,
Jan 16, 2008, 4:54:52 PM1/16/08
to
Hallo Doerthe,

[....]

>>
>> Da ergeben sich ein paar Fragen bei mir:
>>
>> * Wie gruppiere ich das Ganze im Bericht bzw. geht das überhaupt so
>> (die Daten direkt aus der Tabelle nehmen) oder wäre mir mit ein paar
>> SQL-Anweisungen besser geholfen?
>
> Gruppierung über Dat und Pos

Aha, Fehler gefunden. Weil ich den Bericht nach Dat, Pos und Zeile
sortiert brauchte, hatte ich bei Access in "Sortieren und Gruppieren"
Dat, Pos und Zeile eingetragen und dann stundenlang nach der
Möglichkeit gesucht mit der festlegen kann nach welchen Feldern nur
sortiert und nach welchen auch gruppiert werden soll. Aber wenn
irgendwo ein 'und' steht, dann ist auch 'und' gemeint und Access
gruppiert immer nach allen eingetragenen Feldern.

Da hatte ich das 'Und' irgendwie als 'und/oder' verstanden.

>
>> * Wie bekomme ich die Zwischensummen pro Position? Ein Textfeld mit
>> 'Steuerelementinhalt: WERT' und 'Laufende Summe: Über Gruppe' liefert
>> mir immer nur den ersten Wert jeder Gruppe (also z.B. 100,00 / 1,00 /
>> 99,00 / 7,00) und summiert die dann auf (100,0 / 101,00 / 200,00 /
>> 207,00).
>
> =Summe(Wert)
> Wert ist allerdings ein ungünstiger Feldname, kann sein, dass Access da
> streikt, weil es ein reserviertes Wort ist. Dann müsstest Du eine
> Abfrage vorschalten, die das Feld Wert unter einen anderen Namen liefert

Keine Angst, eigentlich nennt sich das Feld 'WTP'. Ich fand nur die
Beschreibung etwas klarer wenn ich es hier 'Wert' nenne.

Dann dachte ich heute morgen beim lesen, dass auch mein nächster
Fehler nun auch klar wäre. Aber mittlerweile kann ich sagen, dass es
auch ohne '=Summe(Wert)' bzw. '=Summe(WTP)' geht.

Einfach nur

=[WTP]

ist ausreichend, wenn gleichzeitig für das Textfeld die Eigenschaft
'Laufende Summe' auf 'Über Gruppe' gesetzt ist. Da verhält sich Access
doch so, wie ich es gestern auch vermutet hatte.


>>
>> Am Rand möchte ich auch noch seitenweise Zwischensummen und Überträge
>> auf der folgenden Seite erwähnen und dass es zu der Tabelle
>> RechnungPos (die auch noch eine Spalte Rechnungsnummer beinhaltet)
>> natürlich auch eine Tabelle Rechnungsempfänger gehört. Dort stehen
>> die Anschriften und die Rechnungsnummern (für die Beziehung zu den
>> Rechnungspositionen) drin.
>
> Für die Zwischensummen und Überträge schau doch mal in der FAQ
> (www.donkarl.com) unter 5.7 nach.

Habe ich mittlerweile gemacht, konnte es nicht ganz umsetzen, weil im
Seitenkopf nicht nur der Übertrag sondern auch einige wiederkehrende
Felder (z.B.: Adressfelder) stehen. Deswegen hatte ich in den
Berichtseigenschaften nicht mit 'Seitenkopf' bzw. 'Seitenfuß'
herumgespielt (die stehen beide immer noch auf 'alle Seiten'),
sondern einfach

Me!Uebertrag.Visible

genutzt.

Danke und Tschüs,

Andreas

Andreas Bruhn

unread,
Jan 17, 2008, 3:39:17 AM1/17/08
to
Hallo Doerthe,


Am Wed, 16 Jan 2008 09:17:25 +0100 schrieb Doerthe Weber:

> Hallo Andreas,
>
>
>>

>> Am Rand möchte ich auch noch seitenweise Zwischensummen und Überträge
>> auf der folgenden Seite erwähnen und dass es zu der Tabelle
>> RechnungPos (die auch noch eine Spalte Rechnungsnummer beinhaltet)
>> natürlich auch eine Tabelle Rechnungsempfänger gehört. Dort stehen
>> die Anschriften und die Rechnungsnummern (für die Beziehung zu den
>> Rechnungspositionen) drin.
>
> Für die Zwischensummen und Überträge schau doch mal in der FAQ
> (www.donkarl.com) unter 5.7 nach.

Wie schon im anderen Posting geschrieben hat sich das mit dem Übertrag
und der Zwischensumme auch schon gelöst.

Dann hatte ich gestern nochmal an anderer Stelle nachgefragt und dabei
festgestellt dass die Summen über die Gruppe(n) gar nicht gefordert
waren, es ging nur um die Zwischensumme und den Übertrag.
(Damit waren auch die eigetnlich benötigten Gruppen/Sortierung klar:
Rechnungsnummer, Position, Zeile)

Heute werde ich mal dann mal den letzten Punkt anschauen: es sind in
dem Bericht nun viele Rechnungen hintereinander... Die Rechnung 012345
geht über vier Seiten, auf den folgenden drei Seiten kommt
Rechnungsnummer 47110815, dann ...

Da wäre es schon auf jeder Rechnungsseite ein "Seite 1 von 4", "Seite
2 von 4" usw. zu haben...

Der einfache Seitenzähler ist mir schon klar, der wird ähnlich
hochgezählt und wieder auf 1 gesetzt wie der Übertrag (der beim
Rechnungswechsel immer wieder auf 0 gesetzt wird). Aber wer sagt mir
schon auf der ersten Seite das für die gerade aktive Rechnungsnummer
z.B. 4 Seiten benötigt werden?

Tschüs,
Andreas

Jens Schilling

unread,
Jan 17, 2008, 4:00:49 AM1/17/08
to
Hallo, Andreas

Andreas Bruhn wrote:
> Da wäre es schon auf jeder Rechnungsseite ein "Seite 1 von 4", "Seite
> 2 von 4" usw. zu haben...
>
> Der einfache Seitenzähler ist mir schon klar, der wird ähnlich
> hochgezählt und wieder auf 1 gesetzt wie der Übertrag (der beim
> Rechnungswechsel immer wieder auf 0 gesetzt wird). Aber wer sagt mir
> schon auf der ersten Seite das für die gerade aktive Rechnungsnummer
> z.B. 4 Seiten benötigt werden?

Schau Dir doch mal den Report "Pages By Group Rpt" an, der innerhalb der
Demo ""Kool Reports" zu finden ist; vielleicht hilft's Dir weiter. Die Demo
kannst Du hier finden :

http://www.groupacg.com/ACGFree.htm

--
Gruss
Jens
______________________________
FAQ: http://www.donkarl.com


Doerthe Weber

unread,
Jan 17, 2008, 5:49:16 AM1/17/08
to
Hallo Andreas,

> Dann dachte ich heute morgen beim lesen, dass auch mein nächster
> Fehler nun auch klar wäre. Aber mittlerweile kann ich sagen, dass es
> auch ohne '=Summe(Wert)' bzw. '=Summe(WTP)' geht.
>
> Einfach nur
>
> =[WTP]
>
> ist ausreichend, wenn gleichzeitig für das Textfeld die Eigenschaft
> 'Laufende Summe' auf 'Über Gruppe' gesetzt ist. Da verhält sich Access
> doch so, wie ich es gestern auch vermutet hatte.
>

Ich würde trotzdem =Summe(WTP) empfehlen, das ist
übersichtlicher/leichter zu überblicken wenn Du nach einiger Zeit
nochmal was am Bericht machen musst.

Gruß
Doerthe

Andreas Bruhn

unread,
Jan 17, 2008, 8:42:36 PM1/17/08
to
Am Thu, 17 Jan 2008 10:00:49 +0100 schrieb Jens Schilling:

> Hallo, Andreas
>
> Andreas Bruhn wrote:
>> Da wäre es schon auf jeder Rechnungsseite ein "Seite 1 von 4", "Seite
>> 2 von 4" usw. zu haben...
>>
>> Der einfache Seitenzähler ist mir schon klar, der wird ähnlich
>> hochgezählt und wieder auf 1 gesetzt wie der Übertrag (der beim
>> Rechnungswechsel immer wieder auf 0 gesetzt wird). Aber wer sagt mir
>> schon auf der ersten Seite das für die gerade aktive Rechnungsnummer
>> z.B. 4 Seiten benötigt werden?
>
> Schau Dir doch mal den Report "Pages By Group Rpt" an, der innerhalb der
> Demo ""Kool Reports" zu finden ist; vielleicht hilft's Dir weiter. Die Demo
> kannst Du hier finden :
>
> http://www.groupacg.com/ACGFree.htm

Ich habe jetzt nur einen schnellen Blick reingeworfen. Der Report
macht jedenfalls genau das gewünschte.

Mir ist heute aber auch noch folgender Code zugetragen worden, der
eben falls das gewünschte macht (ich hoffe der Zeilenumbruch macht
nicht alle kaputt):

Option Compare Database
Option Explicit

Private lngGrpSeite() As Long, lngGrpSeiten() As Long
Private strGrp As String, strGrpOld As String
Private lngPg As Integer, lngPgs As Integer

Private Sub Seitenfußbereich_Format(Cancel As Integer, _
FormatCount As Integer)

Dim lngI As Long

'Es muss ein Textfeld mit =[Seiten] geben, sonst bleibt Pages immer 0!

If Pages = 0 Then 'Beim 1. Formatierdurchgang
ReDim Preserve lngGrpSeite(Page + 1)
ReDim Preserve lngGrpSeiten(Page + 1)
'ZahlGruppe, auf das gruppiert wird, z.B. in der Kopfzeile der Gruppe.
strGrp = Me!ZahlGruppe
If strGrp = strGrpOld Then 'Solange gleiche Gruppe
lngGrpSeite(Page) = lngGrpSeite(Page - 1) + 1
lngPgs = lngGrpSeite(Page)
For lngI = Page - ((lngPgs) - 1) To Page
lngGrpSeiten(lngI) = lngPgs
Next lngI
Else
'Nächste Gruppe
lngPg = 1
lngGrpSeite(Page) = lngPg
lngGrpSeiten(Page) = lngPg
End If
Else 'Ausgabe beim 2. Formatierdurchgang
'txtGruppenseiten ist ein Feld im Seitenfuß des Berichts
Me!txtGruppenseiten = "Gruppenseite " & _
lngGrpSeite(Page) & " von " & _
lngGrpSeiten(Page) & " Gruppenseiten"
End If
strGrpOld = strGrp 'Aktuelle Gruppe speichern
End Sub

0 new messages