Bericht:Summen bilden, wenn der Unterbericht fehlt

Hai nochmal, Access-Freaks,

und gleich nochmal die Datenbank-Mißgeburt:

ein eigentlich simples Problem: zähle die Kunden pro Bezirk.
Man nehme die Kunden-Tabelle (ja, ja, die komplette Adresse mit ausgeschriebenem Bezirksnamen bifindet sich in der Kunden-Tabelle :frowning: ), gruppiere nach Bezirk und schreibe „Anzahl von Kundennummer“…

Nu jibbet aber noch 'ne zweite Kunden-Tabelle namens Käufer-Tabelle, die noch mehr Kunden enthält *schauder*

Also neuen Bericht nach dem selben Muster erzeugt und als Unterbericht in den ersten eingebunden und ein neues Feld mit dem Inhalt „=[Anzahl von Kundennummer] + [Unterbericht].Bericht![KäuferKundenNummer]“
Funktioniert auch, es sei denn, der Bezirk taucht bei den Käufern nicht auf, dann existiert in dem Detail-Datensatz der Unterbericht nicht und damit ist’s mit dem Zusammenzählen Essig…

Ich hab versucht, den Fehler abzufangen, indem ich „[Unterbericht].Bericht![KäuferKundenNummer]“ per Ist Null, Ist Leer und IsMissing auf 0 zu setzen
(also z.B.: Wenn(IstNull([Unterbericht].Bericht![KäuferKundenNummer]);0;[Unterbericht].Bericht![KäuferKundenNummer]) ),
aber das funktioniert auch nicht.

Klar, ich kann [Unterbericht].Bericht![KäuferKundenNummer] mit einem Feld 1:1 in den Bericht übernehmen und auf das dann mit dem richtigen Ergebnis über IsError zugreifen - aber das scheint mir doch wenig elegant…

'ne bessere Idee?

Gruß
Sibylle

Schon wieder hai,

was ist der Unterschied zwischen Kunden und Käufern? Wenn sie gleichberechtigt sind, mach dch eine UNION-Abfrage über beide Tabellen.

Ob eine Abfrage Datensätze enthält oder leer ist, kann frau mit der DCount-Funktion sehr elegant herausfinden.

ujk

…und noch’n Hai,

was ist der Unterschied zwischen Kunden und Käufern?

Radio-Eriwan-Antwort: Im Prinzip gibt’s keinen, aber…

Wenn sie
gleichberechtigt sind, mach dch eine UNION-Abfrage über beide
Tabellen.

…die Struktur, nach der die beiden Tabellen angelegt sind, sind nicht nur an sich schon haarsträubend, sondern auch noch heftigst voneinander abweichend.
Mal ganz davon abgesehen, daß eben das Bezirksfeld, nach dem ja gezählt werden soll, auch mal für ganz andere Daten mißbraucht wurde (z.B. steht da auch mal „Will in Wilmersdorf einsteigen“ oder eine alte Adresse drin, während die sonstigen Wilmersdorfer da eine einfache 12 stehen haben (in einem 255 Zeichen langen Textfeld)) - dafür ist in der anderen Tabelle eine schlichte Bezirks-ID angelegt, deren Ziffern dafür aber von der ersten Tabelle abweichen (Wilmersdorf läuft hier unter 54)
Zusätzlich werden in dem Bericht auch die Summen nach Tabellen getrennt benötigt - den ganzen Müll Auszusortieren und in Ordnung zu bringen, ist ja Sinn der Aktion…
Kurz: UNION ist 'ne schöne Idee, funzt aber leider nicht

Ob eine Abfrage Datensätze enthält oder leer ist, kann frau
mit der DCount-Funktion sehr elegant herausfinden.

*???* Die beiden Abfragen, auf denen der Bericht fußt, enthalten doch Datensätze - es geht um den jeweiligen Detailbereich im Bericht…

Gruß
Sibylle

Hi,

das gibt es doch beim Report die Eigenschaft „NoData“ oder zu Deutsch Ereignis: „Bei Ohne Daten“.

Private Sub Report_NoData(Cancel As Integer)
Cancel = 1
End Sub

Dies bricht die Darstellung des Reports ab, u.U. muss man im Hauptreport den „Fehler“ fuer das Cancel mit einem

if err.number = ??? then resume next

abfangen

Tschau
Peter