|
|
Thema: |
Access 97/2000/2002 |
|
Eine Auftragsdatenbank enthält über
ein gemeinsames Datum die Verbindung der Abrechnung von Sach- und
Personalkosten. In einem zusammengefassten Rechnungsbericht werden
die Summen der entsprechenden Unterberichte in einem Textfeld über
eine Formel in der folgenden Form summiert:
=[Eingebettet1].[Bericht]![Summe
PersKosten] +
[Eingebettet2].[Bericht]![Summe SachKosten]
Es gibt nun Fälle, in denen z.B. Datensätze mit Personalkosten
jedoch keine Datensätze mit Sachkosten vorhanden sind. Die Addition
der Summen aus den Unterberichten ergibt im Summenfeld in diesen Fällen
"#Fehler". Sobald ein "Pseudodatensatz" mit Wert
0 CHF angelegt wird, ist das Problem behoben. Gibt es eine bessere Lösung?
|
Lösung: |
Wenn keine Datensätze zu Sach- oder
Personalkosten vorhanden sind, muss Access bei oben gezeigter Formel
mit NULL-Werten rechnen. Genau das geht aber leider nicht, also wird
"#Fehler" angezeigt. Am einfachsten lösen Sie das Problem
durch den Einsatz einer Funktion "SummeBilden()", die Sie
direkt im Bericht anlegen:
Function SummeBilden() As Currency
Dim curPersKosten As Currency
Dim curSachKosten As Currency
On Error Resume Next
curPersKosten = _
Me.Eingebettet1.Report.Controls("Summe PersKosten")
curSachKosten = _
Me.Eingebettet2.Report.Controls("Summe SachKosten")
SummeBilden = curPersKosten + curSachKosten
End Function
Im Bericht ersetzen Sie die oben gezeigte Formel des betreffenden
Textfeldes durch "=SummeBilden()".
Die Funktion ignoriert durch "On Error Resume Next" zunächst
mögliche, durch den Zugriff auf "NULL" verursachte
Laufzeitfehler. Die beiden folgenden Anweisungen lesen die Summen
aus den Unterberichten. Hat eine der Summen keinen Wert (=NULL), so
erfolgt keine Zuweisung, die Variable behält ihren Initialwert
"0". Die Addition bei der Zuweisung des
Funktionsergebnisses ergibt dann beispielsweise "0" +
"360,50" und somit immer einen im Bericht verwertbaren
Betrag. |
|