Probleme mit Sum

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Probleme mit Sum

Beitrag von Bertram Hansen »

Hallo an alle,

ich habe zum erstenmal den Befehl SUM verwendet und komme nicht zum gewünschten Ergebnis. Ich habe eine Tabelle, stehe auf einem Datensatz der nicht meiner SUM Bedingung (FOR) entspricht und erhalte als Ergebnis 0. Es gibt aber Datensätze, die meiner Bedingung ensprechen.
Beispiel:

Code: Alles auswählen

SUM alias->ges_geb  TO ln_kd_geb  FOR alias->monat = 8 .AND. alias->jahr = 2007 .AND. alias->r_kz = "G"
In der Hilfe steht folgendes:
FOR <lForCondition>
<lForCondition> ist ein optionaler logischer Ausdruck, der eine Bedingung vorgibt. Es werden bei der Summierung nur die Datensätze berücksichtigt, bei denen <lForCondition> den Wert .T. (wahr) liefert.
Ich möchte nur eine Summe über bestimmte Datensätze erhalten, ohne vorher durch alle Datensätze zu gehen.
Muss ich auf einem Datensatz stehe, der meiner FOR Bedingung entspricht?
Kann ich den Befehl überhaupt so für meine Berechnung anwenden?
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

der SUM Befehl wirkt ohne Parameter genau auf einen Datensatz.

ALL prüft die ganze Datei (eventuell sehr langsam)
REST wenn man mit Index den ersten gefunden hat, dann
kann man damit ab diesem weitersuchen
NEXT x oder mein weiß wieviele Datensätze man durchsuchen will.

Das gilt übrigiens bei vielen Dateibefehlen und steht auch so in der Hilfe.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Hubert.

Einspruch. "SUM summe TO nSumme FOR summe > 0.00" summiert alle Datensätze, in denen "summe" größer Null ist. Wie bei "DELETE", das es auch mit der "ALL"-Option gibt, bewirkt ein "FOR" letztlich ein "ALL ... FOR". Es geht bei SUM ebenso. Der Fehler besteht darin, daß die Tabelle offenbar nicht selektiert ist.

Select Alias
SUM ...

dürfte funktionieren. SUM arbeitet nur in der aktuellen Workarea. So, wie Bertrams Code aussieht, ist "Alias" vermutlich nicht selektiert. SUM bewegt also den Dateizeiger in der aktuellen Tabelle (die NICHT "Alias" ist) und summiert parallel aus "Alias".
Herzlich,
Tom
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Beitrag von Bertram Hansen »

Hallo Tom,

ja das ist die Lösung. Danke Tom! Was ein Select alles so bewirken kann. =D>
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Antworten