Summe

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Traugott
Beiträge: 19
Registriert: Sa 1. Jan 2011, 12:08

Summe

Beitrag von Traugott »

Hallo,

mit nachfolgendem Code möchte ich die Datensätze aus meinem DSBeispiel (Betrag) addieren. Geht aber nicht .

Code: Alles auswählen

var
    i:=integer;
    Summe : double;
begin
    i := DSKasse.RecordCount;
    k := DSKasse.
    summe := 0;
    DSKasse.RecNo:=0;
 repeat
    DSKasse.RecNo := DSKasse.RecNo +1;
    Summe := Summe + DSKasse.FieldByName('BBetrag').AsFloat;
 
 
 until i >= 2;
was mache ich falsch ??
Zuletzt geändert von Lori am Fr 28. Jan 2011, 12:56, insgesamt 1-mal geändert.
Grund: Highlighter

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Summe

Beitrag von theo »

Traugott hat geschrieben:Geht aber nicht .
Das ist eine der informativsten Fehlerbeschreibungen. ;-)
Traugott hat geschrieben: was mache ich falsch ??
Ich glaube dein Hirn ist nicht eingeschaltet. ;-)
Wo ändert sich dein "i" in der repeat-Schleife?

Traugott
Beiträge: 19
Registriert: Sa 1. Jan 2011, 12:08

Re: Summe

Beitrag von Traugott »

mein Zähler soll sein:
///Rec.No +1

er soll also den ersten und zweiten Datensatz im Feld Betrag zusammenzählen

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Summe

Beitrag von theo »

Egal, dein "i" ändert sich nie in der Schleife, also wird i>=2 niemals wahr, es sei denn es ist von Anfang an >=2, dann hat die Schleife aber keinen Sinn.

Linkat
Lazarusforum e. V.
Beiträge: 559
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Summe

Beitrag von Linkat »

Hallo Traugott,
dein Programmausschnitt ist nur schwer leserlich und auch unvollständig. Ich kenne deine typen bzw. records nicht.

Zunächst mal den Quellcode in Highlighter: (das ist die linke ComboBox über dem Textfeld, hier kannst du Freepascak/Lazarus auswählen, und schon wird der Code übersichtlicher dargestellt.

Code: Alles auswählen

var
i:=integer;
Summe : double;
begin
i := DSKasse.RecordCount;
k := DSKasse.
summe := 0;
DSKasse.RecNo:=0;
repeat
DSKasse.RecNo := DSKasse.RecNo +1;
Summe := Summe + DSKasse.FieldByName('BBetrag').AsFloat;
 
 
until i >= 2;
dann den Text noch ein bischen einrücken:

Code: Alles auswählen

var
  i:=integer;
  Summe : double;
  begin
    i := DSKasse.RecordCount;
    k := DSKasse.
    summe := 0;
    DSKasse.RecNo:=0;
    repeat
      DSKasse.RecNo := DSKasse.RecNo +1;
      Summe := Summe + DSKasse.FieldByName('BBetrag').AsFloat;
 
 
    until i >= 2;
So jetzt zu deinen Problemen:

k wird nichts vernünftiges zugewiesen, i wird nicht erhöht.
Du musst uns schon erklären was du überhaupt vorhast was ist DSKasse. ....?

Bitte genaue Angaben und genaue Fehlerbeschreibung.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Traugott
Beiträge: 19
Registriert: Sa 1. Jan 2011, 12:08

Re: Summe

Beitrag von Traugott »

Hi

DSKasse ist ein TDBF und wird in ein DBGrid geladen. Hier gibt es dann das Feld Betrag dessen Beträge ich als Summe in einem Label anzeigen möchte.
Mit
FloatToStrF(Summe, ffCurrency, 15, 2);
soll mein Betrag angezeigt werden.

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Summe

Beitrag von MmVisual »

Was sagt denn der Compiler für eine Fehlermeldung?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Traugott
Beiträge: 19
Registriert: Sa 1. Jan 2011, 12:08

Re: Summe

Beitrag von Traugott »

das ist es ja
keine Fehlermeldung
in meinem Label wird der Betrag des 2 Satzes angzeigt

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Summe

Beitrag von theo »

Traugott hat geschrieben:das ist es ja
keine Fehlermeldung
in meinem Label wird der Betrag des 2 Satzes angzeigt
Sag mal, hast du heute zu warm gebadet?
Was soll man denn zu deinen Meldungen sagen?

Ich kann doch nicht schreiben:

Code: Alles auswählen

asdfads asldf asdfa dfas
dafdsfasdf * asdfdsafads;
asdfasdfadsf
writeln(x);
und dann fragen: Warum geht das nicht?

So kann man dir nicht helfen.

Traugott
Beiträge: 19
Registriert: Sa 1. Jan 2011, 12:08

Re: Summe

Beitrag von Traugott »

Hallo,

wenn man in einem Forum um Hilfe bittet, stelle ich mir
andere Antworten vor wie
hast du heute zu warm gebadet
sachlich und respektvoll sollte man meiner Meinung nach bleiben
auch wenn der Wissensunterschied gross ist.

Ich verabschiede mich für heute und wünsche noch einen schönen Abend.

mfg

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Summe

Beitrag von MmVisual »

Poste doch bitte mal gezippt das gesamte Projekt.

Wie Du ja siehst kann mit dem Codeschnipsel niemand was anfangen und somit kann auch niemand helfen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Summe

Beitrag von theo »

Traugott hat geschrieben: sachlich und respektvoll sollte man meiner Meinung nach bleiben
auch wenn der Wissensunterschied gross ist.
Wie man in den Wald ruft...
Zum Respekt gehört auch, das man die Frage anständig stellt.
Sowas:
k := DSKasse.
ist schludrig und nicht respektvoll.
Mit Wissen hat das nichts zu tun, nur mit Sorgfalt.
Anständige Fragen werden von mir immer anständig beantwortet.
Ich wollte dich aber nicht verletzen.

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Summe

Beitrag von creed steiger »

ums kurz zu machen:
(und das wurde schon mehrfach gepostet)

Code: Alles auswählen

repeat
DSKasse.RecNo := DSKasse.RecNo +1;
Summe := Summe + DSKasse.FieldByName('BBetrag').AsFloat;
until i >= 2;
wie sollte in dieser Schleife sich i verändern oder jemals 2 erreichen?

Antworten