Problem mit DSUM und Kriterien

Hallo, habe folgende DSum Berechnung konstruiert um zwei Kriterien zu verwenden. Leider ist das Ergebniss fehlerhaft, die Verknüpfung der zwei Kriterien durch „AND“ wird nicht beachtet?!

For Feld = 1 To 10

Summe = Nz(DSum(Bezeichnung & „* ZHonorar / 1000“, „Tourenabfrage“, "T1WurfA " & Feld & " AND T1WurfB " & Feld))

Next Feld

Es kommt zwar keine Fehlermeldung aber wenn „T1Wurf 1 UND T1WurfB 1“ geprüft wird, stimmt es nicht :frowning:
Geht DSum mit zwei verknüpften Kriterien nicht?

Danke im Voraus

Hallo,

Hallo, habe folgende DSum Berechnung konstruiert um zwei
Kriterien zu verwenden. Leider ist das Ergebniss fehlerhaft,
die Verknüpfung der zwei Kriterien durch „AND“ wird nicht
beachtet?!

For Feld = 1 To 10

Summe = Nz(DSum(Bezeichnung & „* ZHonorar / 1000“,
„Tourenabfrage“, "T1WurfA " & Feld & " AND T1WurfB " &
Feld))

Next Feld

Es kommt zwar keine Fehlermeldung aber wenn „T1Wurf 1 UND
T1WurfB 1“ geprüft wird, stimmt es nicht :frowning:

WAS stimmt nicht?

Bist Du sicher , dass die beiden Bedingungen mit „And“ zu verknüpfen sind?

Geht DSum mit zwei verknüpften Kriterien nicht?

Es gibt kein Problem damit…

Was soll dieser Code überhaupt bewirken?

For Feld = 1 To 10

'Anschliessend wird die „Summe“ 10 mal berechnet, aber hat am Ende der Schleife den Wert des 10. Durchgangs.
Summe = Nz(DSum(Bezeichnung & „* ZHonorar / 1000“,
„Tourenabfrage“, "T1WurfA " & Feld & " AND T1WurfB " &
Feld))
Next Feld

…Bezeichnung & „* ZHonorar / 1000“…

soll damit die VBA-Variable „Bezeichnung“ (welchen Datentyp hat die?) mit dem Tabellenfeld „ZHonorar“ des gerade akt. Datensatzes multipliziert und danach das Ergebis durch 1000 geteilt werden?
Vermutlich sind solche Berechnungen mit VBA-Variablen ausserhalb von Dsum besser angebracht.

Welchen Datentyp haben T1WurfA und T1WurfB in der Tabelle und wie ist „Feld“ deklariert?

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

der Code ist nur ein Schnipsel aus einem größeren Komplex! Mit einem Kriterium klappt die Abfrage aber sobald ich das „AND“ verwende scheint er willkürlich zu berechnen…

Es wird damit wie folgt ein Honorar für Zeitungszusteller berechnet:

  1. „Bezeichnung“ ist ein Feldname wo eine Anzahl drin steht
  2. „ZHonorar“ ist der Verdienst einer Person gerechnet auf 1000 Exemplare
  3. „Tourenabfrage“ ist die Tabelle mit den relevanten Personen
  4. „T1WurfA“ ist ein Feld, welches anzeigt ob gerechnet werden soll oder nicht
  5. „T1WurfB“ ist identisch

Wenn in T1WurfA und T1WurfB ein Wert steht der mit dem aktuellen Schleifendurchlauf nicht übereinstimmt, dann soll gerechnet werden, sonst nicht. Habe aber das Phänomen das er trotzdem rechnet :frowning:

Ist schwer zu erklären, aber mit einem Kriterium klappt es super. Auch wenn ich mein DSum zweimal laufen lasse so wie hier:

Summe1 = Nz(DSum(Bezeichnung & „* ZHonorar / 1000“,
„Tourenabfrage“, "T1WurfA " & Feld))
Summe2 = Nz(DSum(Bezeichnung & „* ZHonorar / 1000“,
„Tourenabfrage“, "T1WurfB " & Feld))

nur da gibt es das Problem, dass in Summe1 und in Summe2 was steht und zuviel berechnet wird, er muss es in einem Durchlauf schaffen…

Grüße, Thomas

Hallo,

vielleicht meinst Du ja:

Wenn in T1WurfA und ODER T1WurfB ein Wert steht.. 

(Wie vorher schon angemerkt)

Viele Grüße vom Bodensee
Franz, DF6GL

Moin, Thomas,

in so einer Lage hilft nur noch

 For Feld = 1 To 10
 If T1WurfA Feld AND T1WurfB Feld Then 
 Debug.Print "Berechnen "; Feld; T1WurfA; T1WurfB 
 End If
 Next Feld

Manchmal erlebt man da seine Überraschungen.

Gruß Ralf