Announcement

Collapse
No announcement yet.

Berechnung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Berechnung

    Hi ,
    ich hab ein Problem , vor kurzem hab ich die Frage gestellt wie man eine Einfache berechnung macht, das klappt ja auch ganz gut aber jetzt mal die Frage : ich habe 30 DB-Felder, und die sollen ganz einfach zusammengerechnet werden aber wenn ich ein Feld nicht belege mit einer Zahl dann kommt die Meldung (" ist kein gültiger Gleitkommawert).
    Was hab ich falsch gemacht ?

    mfg. Wilfried Hagemann

  • #2
    Hi Wilfried,<p>
    an deiner Stelle würde ich ein Array vom Typ Integer deklarieren, dass so viele Elemente hat wie dein Formular Felder.<br>
    Anschließend ordnest du jedem Element ein Feld zu, wobei du vorher prüfst, ob das Fels "leer" ist!<p>
    Das würde dann ungefähr so aussehen:<p>
    <b>procedure</b> TForm1.FelderAuslesen();<br>
    <b>var<b><br>
    feld: array[1..10] of integer;<br>
    <b>begin</b><br>
    if dbedit1.text = '' then feld[1] := 0<br>
    else feld[1] := strtoint(dbedit1.text);<br>
    ...<br>
    <b>end</b>;<p>
    Probier's mal aus!<p>
    Mfg, Daniel

    Comment


    • #3
      Hi Wilfried,<p>
      an deiner Stelle würde ich ein Array vom Typ Integer deklarieren, dass so viele Elemente hat wie dein Formular Felder.<br>
      Anschließend ordnest du jedem Element ein Feld zu, wobei du vorher prüfst, ob das Fels "leer" ist!<p>
      Das würde dann ungefähr so aussehen:<p>
      <b>procedure</b> TForm1.FelderAuslesen();<br>
      <b>var</b><br>
      feld: array[1..10] of integer;<br>
      <b>begin</b><br>
      if dbedit1.text = '' then feld[1] := 0<br>
      &nbsp;else feld[1] := strtoint(dbedit1.text);<br>
      ...<br>
      <b>end</b>;<p>

      Probier's mal aus!

      Mfg, Daniel

      Comment


      • #4
        Hallo,

        man kann auch direkt mit SQL die Summe aller Felder berechnen lassen, wobei sich dann SQL darum kümmert, die leeren Felder zu ignorieren. Das folgende Beispiel demonstriert die Syntax:
        <pre>
        SELECT Count(*), SUM(ZV013Betrag) + SUM(ZV013Mahn) + SUM(ZV013Zuschlag)
        FROM ZollDB
        WHERE Abschluss = False
        </pre&gt

        Comment


        • #5
          Hi,

          ich würde das Problem auch mit SQL lösen (wie Andreas es vorschlägt), sollte es direkt in Delphi gemacht werden, dann würde ich die String-Umwandlung aber mit einer <b>try except end</b>-Anweisung überprüfen:

          <pre>
          procedure TForm1.FelderAuslesen;
          var
          feld: array[1..30] of integer;
          i: Integer;
          begin
          for i := 1 to 30 do begin
          try
          feld[i] := Table.Fields[i].asInteger;
          except
          feld[i] := 0;
          end;
          end;
          end;
          </pre>

          Das Beispiel funktioniert natürlich nur, wenn die Felder sich auch in der richtigen Reihenfolge in der TTable-(oder TQuery-)Komponente befinden.

          Vielleicht hilft Dir das ja ein wenig weiter.

          Lar

          Comment

          Working...
          X