Re: Wie bilde ich Summen mit Blنtterfunktion? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Claus (4645 Beiträge) am Sonntag, 9.Juli.2006, 15:27. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Blنtterfunktion?

      Hallo Berthold,

      habe das mal auf die schnelle eingebaut.

      Versuch es mal so:


      <perl>
      $summe_feldA=$Summe;#muss am Anfang stehen
      




       

         $_range = 0 if (!$_range_length);
          $_range = $work_range2 if (length($work_range2)>0);
          $_range_length = 10 if (!$_range_length);
          $rng = $_range . "," . $_range_length;
      
          $work_range = $_range;     $append .= "&amp;work_range=$work_range";     get "bla bla...... range=$rng sort=$sortfelder", "$file";     $bis = $_range + $_range_length;     $von = $_range + 1;     out "<br />Einträge $von bis \n";     if ($bis < $_amount_query)        {         out "$bis von $_amount_query\n";        }      else        {         out "$_amount_query von $_amount_query";        }     out "<table>";     out "<tr>\n";     out "<th>S</th>\n";     out "<th>Key</th>\n";     out "<th>FeldA</th>\n";     out "</tr>\n";
          while (get_next("$file"))        {
             
      if ($back ne "1")
      

      {
           $summe_feldA +=$feldA;
      

      }
              out "<tr class='$work_class'>;
              out "<td class='a10' nowrap> $kr_key </td>\n";
              out "<td class='a10' style='text-align:right;'>$feldA</td>\n";
              out "</td></tr>\n";
             }
          out "<tr>";
          out "<td class='a10' style='text-align:right;'>$summe_feldA</td>\n";
          out "<td colspan='2'></td></tr>\n";
          out "</table>";
      
          my $newrange = $_range + $_range_length;     my $oldrange = $_range - $_range_length;     $oldrange = 0 if (($oldrange < 0) && ($oldrange >= $_range_length));     if ($oldrange >= 0)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&$Summe=$Summe&$back=1&range=$oldrange,$_range_length$append'>\n";         out "zurück <img src='$gv_gfxroot/pfeil_links.gif' alt='zurück'>\n";         out "</a>\n";        }     if ($newrange < $_amount_query)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&$Summe=$summe_feldA&range=$newrange,$_range_length$append'>\n";         out "<img src='$gv_gfxroot/pfeil_rechts.gif' alt='weiter'> weiter\n";         out "</a>\n";        }      out "</div>\n";      &do_runtime; # Ausgabe bp-Runtime      out "</div>\n"; </perl>


      Mache einfach eine Kopie des Templates und dann mal probieren.

      Sollte eigentlich so klappen.

      Gruß

      Claus


      PS: bei eventuellen weiteren Links musst Du da natürlich auch noch tätig werden.


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Berthold Suttner (2 Beiträge) am Freitag, 7.Juli.2006, 16:59.
    Wie bilde ich Summen mit Blätterfunktion?

      Hallo Forum,

      ich nutze für eine Adressliste die Blätterfunktion aus der Bibliothek, klappt auch gut. Jetzt habe ich in der Datei ein Feld mit Zahlenwerten und möchte bei der Listeausgabe auch die Summe dieses Feldes der ausgewählten Sätze anzeigen lassen, So dass es auch gleich ber dersten Seite angezeigt wird, wie bei der Blätterfunktion (1 bis 10 von 123, Summe FeldA = 45.123)
      Wie stelle ich das an?

      Bedanke mich schon jetzt für jeden Tipp

      Mit freundlichem Gruss

      Berthold Suttner

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 8.Juli.2006, 09:46. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Blätterfunktion?

      Hallo Berthold,

      vermute mal, Du benutzt die Volltextsuche von Tina aus der Bibliothek??

      dann versuch mal so (nicht getestet):

      schnipp----



      <loop _fullsearch~=$suche fullsearch_match=500 sort^=-Id code=perl db=Datenbank range^=$v,10>
      

      $Ergebnis=$Ergebnis+$FeldA;

      out "<bla bla $x $y $z>";
      </loop>
      out"Resultat: $Ergebnis EUR;
      

      schnapp-----

      Wo Du das Ergebnis ausgeben willst, musst Du mal selbst probieren.


      hth

      Gruß

      Claus

     Antworten

    Beitrag von Bertold Suttner (1 Beitrag) am Samstag, 8.Juli.2006, 13:14.
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      Guten Tag Claus,

      danke für deine Antowrt.
      Ich arbeite mit get und nicht mit loop.
      Innerhalb der while-get-next Schleife addiere ich da Feld mit $summe_feldA += feldA und gebe das Feld ausserhalb der Schleife aus. Eigentlich logisch.
      Das führt aber dazu, dass immer nur die zehn Sätze der jeweiligen Seite (range) addiert werden. Bei jeder "Blätter"-Seite wird wieder neu addiert, obwohl ich das Feld $summe_feldA nicht initialisiere. Auch wenn ich das Feld bei jedem Blättern wegsichere bringt das nicht, es fänmgt imer wieder bei 0 an.
      Was mache ich falsch?

      Gruss

      Berthold Suttner

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 8.Juli.2006, 14:39. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      Hallo Berthold,

      wenn ich Dich jetzt richtig verstanden habe, möchtest Du das nicht nur pro Seite sondern die Summe fortlaufend addieren bzw. beim Zurückblättern wieder subtrahieren, richtig??

      Nur mal als Ansatz:

      Dann musst Du den Wert bei den Blätterlinks, sowohl beim vor- als auch beim zurückblättern mit übergeben.

      z.B. bei vorwärts:

      DeinBlätterlinkvorwärts&$Summe=$summe_feldA

      Dann im Perlbereich entsprechend am Anfang mit einbauen

      <perl>
      $summe_feldA=$Summe;
      
      hier dein Inhalt......
      </perl>

      bei rückwärts ist es etwas komplizierter, denn dann hast Du ja schon den Seitenwert in der Variablen $Summe gespeichert. Also mit einer Schleife das erneute addieren unterbinden.

      DeinBlätterlinkzurück&$Summe=$Summe&$back=1


      in der get-Schleife entsprechend prüfen, ob zurück geklickt wurde.

      Hier mal der Code-Ansatz(zusammen für vor und zurück gedacht, mit unterbinden von neu addieren bei zurück):


      <perl>
      $summe_feldA=$Summe;
      
      .....
      get....

      while.....
      if ($back ne "1")
      

      {

      $summe_feldA += feldA
      

      }
      .....

      </perl>
      
      Ich hoffe, ich habe mich jetzt nicht zu kompliziert ausgedrückt, aber ohne Quelltext ist es nicht so einfach.

      Sonst frage halt noch mal nach (dann aber bitte mit etwas mehr Code)

      ;-))

      Gruß

      Claus

     Antworten

    Beitrag von Berthold Suttner (2 Beiträge) am Sonntag, 9.Juli.2006, 13:46.
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      Hallo Claus,

      danke für die den Lösungsansatz,
      ich arbeite jetzt schon mit einer Variablen, in der ich die Werte addiere,
      was ich nur nicht verstehe, dass bei jedem Blättervorgang dieses Summenfeld ($summe_feldA) ohne mein Zutun wieder auf Null gesetzt wird.

      hier mal der (Teil-)Code

         $_range = 0 if (!$_range_length);
          $_range = $work_range2 if (length($work_range2)>0);
          $_range_length = 10 if (!$_range_length);
          $rng = $_range . "," . $_range_length;
      
          $work_range = $_range;     $append .= "&amp;work_range=$work_range";     get "bla bla...... range=$rng sort=$sortfelder", "$file";
          $bis = $_range + $_range_length;     $von = $_range + 1;     out "<br />Einträge $von bis \n";     if ($bis < $_amount_query)        {         out "$bis von $_amount_query\n";        }      else        {         out "$_amount_query von $_amount_query";        }     out "<table>";     out "<tr>\n";     out "<th>S</th>\n";     out "<th>Key</th>\n";     out "<th>FeldA</th>\n";     out "</tr>\n";
          while (get_next("$file"))        {         $summe_feldA +=$feldA;         out "<tr class='$work_class'>;         out "<td class='a10' nowrap> $kr_key </td>\n";         out "<td class='a10' style='text-align:right;'>$feldA</td>\n";         out "</td></tr>\n";        }     out "<tr>";     out "<td class='a10' style='text-align:right;'>$summe_feldA</td>\n";     out "<td colspan='2'></td></tr>\n";     out "</table>";
          my $newrange = $_range + $_range_length;     my $oldrange = $_range - $_range_length;     $oldrange = 0 if (($oldrange < 0) && ($oldrange >= $_range_length));     if ($oldrange >= 0)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&range=$oldrange,$_range_length$append'>\n";         out "zurück <img src='$gv_gfxroot/pfeil_links.gif' alt='zurück'>\n";         out "</a>\n";        }     if ($newrange < $_amount_query)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&range=$newrange,$_range_length$append'>\n";         out "<img src='$gv_gfxroot/pfeil_rechts.gif' alt='weiter'> weiter\n";         out "</a>\n";        }      out "</div>\n";      &do_runtime; # Ausgabe bp-Runtime      out "</div>\n";


      Gruss

      Berthold Suttner

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 9.Juli.2006, 14:58.
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

       was ich nur nicht verstehe, dass bei jedem Blättervorgang dieses Summenfeld ($summe_feldA) ohne mein Zutun wieder auf Null gesetzt wird
      


      Weil die Variable das Ende des Perl-Skriptes nicht überlebt - und das ist schon Geschichte, wenn die Datensätze auf Deinem Bildschirm angezeigt werden.

      Wenn Du blätterst wird das Skript völlig neu (alles auf Anfang) aufgerufen, das Blättern funktioniert dann deshalb, weil alle (notwendigen) Informationen über den vorherigen Zustand (z.Bsp. den Bereich der angezeigten Datensätze oder Deine aufgelaufenen Summen) zusammen mit dem Aufruf des Skripts per URL übergeben werden und dann für die Neuausgabe/-berechnung zur Verfgung stehen.

      Sollen die Variablen selbst auch noch nach der Ausführung des Perl-Skriptes zur Verfügung stehen, müssen diese unabhängig vom Template in einer Datenbank oder Datei gespeichert werden.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Sonntag, 9.Juli.2006, 15:27. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      Hallo Berthold,

      habe das mal auf die schnelle eingebaut.

      Versuch es mal so:


      <perl>
      $summe_feldA=$Summe;#muss am Anfang stehen
      




       

         $_range = 0 if (!$_range_length);
          $_range = $work_range2 if (length($work_range2)>0);
          $_range_length = 10 if (!$_range_length);
          $rng = $_range . "," . $_range_length;
      
          $work_range = $_range;     $append .= "&amp;work_range=$work_range";     get "bla bla...... range=$rng sort=$sortfelder", "$file";     $bis = $_range + $_range_length;     $von = $_range + 1;     out "<br />Einträge $von bis \n";     if ($bis < $_amount_query)        {         out "$bis von $_amount_query\n";        }      else        {         out "$_amount_query von $_amount_query";        }     out "<table>";     out "<tr>\n";     out "<th>S</th>\n";     out "<th>Key</th>\n";     out "<th>FeldA</th>\n";     out "</tr>\n";
          while (get_next("$file"))        {
             
      if ($back ne "1")
      

      {
           $summe_feldA +=$feldA;
      

      }
              out "<tr class='$work_class'>;
              out "<td class='a10' nowrap> $kr_key </td>\n";
              out "<td class='a10' style='text-align:right;'>$feldA</td>\n";
              out "</td></tr>\n";
             }
          out "<tr>";
          out "<td class='a10' style='text-align:right;'>$summe_feldA</td>\n";
          out "<td colspan='2'></td></tr>\n";
          out "</table>";
      
          my $newrange = $_range + $_range_length;     my $oldrange = $_range - $_range_length;     $oldrange = 0 if (($oldrange < 0) && ($oldrange >= $_range_length));     if ($oldrange >= 0)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&$Summe=$Summe&$back=1&range=$oldrange,$_range_length$append'>\n";         out "zurück <img src='$gv_gfxroot/pfeil_links.gif' alt='zurück'>\n";         out "</a>\n";        }     if ($newrange < $_amount_query)        {         out "<a href='$_link&namerein=$namerein&sid=$sid&$Summe=$summe_feldA&range=$newrange,$_range_length$append'>\n";         out "<img src='$gv_gfxroot/pfeil_rechts.gif' alt='weiter'> weiter\n";         out "</a>\n";        }      out "</div>\n";      &do_runtime; # Ausgabe bp-Runtime      out "</div>\n"; </perl>


      Mache einfach eine Kopie des Templates und dann mal probieren.

      Sollte eigentlich so klappen.

      Gruß

      Claus


      PS: bei eventuellen weiteren Links musst Du da natürlich auch noch tätig werden.

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 8.Juli.2006, 16:51.
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      Wenn die Datenbank irgendwann mal recht gross werden sollte, ist das so nicht anzuraten. Da wäre es besser, die Summen entsprechend bei der Eingabe neuer Datensätze in ein Summenfeld einzugeben.
      Wenn die DB nicht zu gross wird, wäre eine Möglichkeit, die DB einmal in nem Loop durchlaufen zu lassen und dann die Summe zu errechnen (also Gesamtsumme); die Summen für die angezeigten Sätze "von vorn" bis zum Ausgabebereich im Loop ne nach Rangebereich als Zwischensumme in ner Variablen speichern (Bedingt davon, welcher range-Bereich ans Template übergeben wurde, wenn der Zähler des Datensatzes gleich diesem ist, die Summe in ne Variable speichern und dann entsprechend im Blätterscript einsetzen)
      Dabei ist allerdings zu beachten, dass dann aufgrund unterschiedlicher Range-Bereiche der mehrfachen DB-Durchläufe die internen Variablen nicht mehr als Parameter verwendet werden können, vielmehr müssen diese in den Aufrufparametern anders heissen und an den notwendigen Stellen zur Laufzeit des Templates verwendungsspezifisch umgespeichert werden.
      Nicht trivial aber interessant zu realisieren ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 8.Juli.2006, 17:27. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Bl&#1606;tterfunktion?

      >...die Summe in ne Variable speichern und dann entsprechend im Blätterscript einsetzen)
      

      genau das hatte ich ihm in meinem einfachen Ansatz versucht zu vermitteln.

      ;-)

      Habe das Berechnen vom range und den entsprechenden "Blätterkram" bei meiner Umkreissuche bereits geproggt und umgesetzt. War 'ne "Schweinearbeit" und wäre

      a) zu komplex, um das hier zu erklären und

      b) gebe auch ich hier nicht ALLES zum Besten.

      ;-)

      Gruß

      Claus

      PS: wünsche trotz Spiel um "nur" Platz 3 allen bp-lern einen schönen Fußball-Abend.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 8.Juli.2006, 09:52. WWW: jobmarder.de
    Re: Wie bilde ich Summen mit Blätterfunktion?/Nachtrag;-)

      sorry,

      hatte die perl-tags vergessen. Kommt davon, wenn man nur mit get arbeitet.
      ;-)

      <loop _fullsearch~=$suche fullsearch_match=500 sort^=-Id code=perl db=Datenbank range^=$v,10>
      

      $Ergebnis=$Ergebnis+$FeldA;

      out "<bla bla $x $y $z>";
      </loop>
      

      <perl>
      out"Resultat: $Ergebnis EUR;
      </perl>
      

      Gruß

      Claus

     Antworten


     
 Liste der Einträge von 17551 bis 17701:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.05s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!