Re: Gruppieren von Werten @Sascha - 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 Sander (8133 Beiträge) am Donnerstag, 10.Mai.2001, 22:43.
    Re: Gruppieren von Werten @Sascha

      der ist einfach "einfach" :-))

      Sander


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Steffen Sieblist (4 Beiträge) am Donnerstag, 10.Mai.2001, 10:36. WWW: www.kreis03.de
    Gruppieren von Werten

      Hi, ich habe das Problem ein Feld auszugeben und dieses zu Gruppieren (doppelte Felder nur einmal ausgeben).
      Wie mache ich dies am besten ????

      Gruss Steffen

     Antworten

    Beitrag von Sascha Fitzner (476 Beiträge) am Donnerstag, 10.Mai.2001, 13:54. WWW: planet-gaga.de
    Re: Gruppieren von Werten

      hi steffen!

      das was du suchst nennt man "gruppenwechsel".

      normalerweise macht man das so:

      - index auf das feld legen und nach diesem feld sortieren. (über die datenbankverwaltung).


      im template:

      - gemerkten auf leer setzen

      ab hier schleife:

      - datensatz lesen und prüfen ob der gelesene datensatz mit dem gemerkten übereinstimmt.d
      - stimmt er überein ist es die gleiche gruppe, also kein gruppenwechsel nötig.
      - stimmt er nicht überein, einen gruppenwechsel ausführen (sprich evtl. gruppensummen bilden und anzeigen, neue überschrift für den neuen etc.). anschliessend den neuen merken (für weiteren vergleich)
      - datensatz verarbeiten

      ende der schleife: weiter bei "- datensatz lesen und prüfen..."

      ich hoffe du hast die theorie verstanden.

      schau dir mal die befehle get und getnext für das lesen der datensätze sowie while für die schleifensteuerung an.

      dokumentation findest du auf der startseite von baseportal.

      versuche es mal gerade mit perl befehlen zu beschreiben:

      $tmp="";
      

      get "sort=sortierfeld", datenbank;
      while (get_next(datenbank))
      {
      if ($tmp eq $sortierfeld)
      {
      
      kein gruppenwechsel nötig, datensatz ist in der gleichen gruppe
      }
      else
      {
      
      endeverarbeitung der alten gruppe, startverarbeitung der neuen gruppe
      $tmp=sortierfeld; (Merken der neuen gruppe für weitere vergleiche)
      }
      }
      
      letzte gruppe gegebenenfalls mit endeverarbeitung schlissen.

     Antworten

    Beitrag von Claus Christmeier (598 Beiträge) am Donnerstag, 10.Mai.2001, 14:20.
    Re: Gruppieren von Werten @Sascha

      Hallo Sascha,

      bitte versteh es nicht falsch, dass ich mich hier einmische, ABER mit dem Code bekommst Du einen Gruppenwechsel beim 1.Satz, der gar keiner ist wäre es nicht so richtiger?

      $first=1;
      $last=0;
      $tmp="";
      

      get "sort=sortierfeld", datenbank;
       
      while (get_next(datenbank))
           {
            if (!$first) && ($tmp ne $sortierfeld))
              {
               endeverarbeitung der alten gruppe, startverarbeitung der neuen gruppe
               $last=0;
              }
            else
              {
               kein gruppenwechsel nötig, datensatz ist in der gleichen gruppe
               $last=1;
              } 
            $first=0;
            $tmp=sortierfeld; (merken der neuen gruppe für weitere vergleiche)
           }
      if ($last)
        {
         letzte gruppe gegebenenfalls mit endeverarbeitung schliessen.
        }
      

      Wie ist Deine Meinung dazu?

      Gruß
      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 10.Mai.2001, 16:25.
    Re: Gruppieren von Werten @Sascha

      oder wie wäre eine liste?
      get;
      while get_next
      {
      push @liste, $Feld if index(" @liste ", " $Feld ")<0;
      }
      out "@liste";
      

      oder mit for wieder ausgeben

      for (@liste)
      {
      out $_;
      }
      

      Sander

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 10.Mai.2001, 21:48.
    Re: Gruppieren von Werten @Sascha

      Hihi, der Code gefällt Dir, gelle?

      ...if index(" @liste ", " $Feld ")<0;

      ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 10.Mai.2001, 22:43.
    Re: Gruppieren von Werten @Sascha

      der ist einfach "einfach" :-))

      Sander

     Antworten

    Beitrag von Ruben (403 Beiträge) am Freitag, 11.Mai.2001, 07:48.
    Re: Gruppieren von Werten @Sascha

      is auch n "starkes Stück" Code, der allerhand auf einmal macht!
      ;-)

     Antworten

    Beitrag von Sascha Fitzner (476 Beiträge) am Donnerstag, 10.Mai.2001, 22:28. WWW: planet-gaga.de
    Re: Gruppieren von Werten @Sascha

      Stimmt Dir 100% zu!
      Manchmal ist aber auch ein erster Gruppenwechsel wichtig! Denk mal an eine Liste die z.B. bei einem Gruppenwechsel ein neuen Dokumentenkopf ausgibt....
      so in der Art:

      Warengruppe: 650 Katzenfutter, Nass
      Artikelbestände innerhalb der Warengruppe
      4711 Kitekat 480 Einheiten
      4712 Whiskas 490 Einheiten
      4713 Schmusy 500 Einheiten

      Warengruppe: 660 Katzenfutter trocken
      Artikelbestände innerhalb der Warengruppe
      4811 Felix 400 Gramm 150 Einheiten
      4812 Felix 4 kg 250 Einheiten
      4813 etc.

      Wenn du eine Kopfverarbeitung innerhalb eine Gruppe haben möchtest passrt das schon, dann würde der erste Gruppenwechsel eine Kopfzeile generieren!
      Wenn du eine Fussverarbeitung hast stimmt dein argument! dann würde ein gruppenfuss vor der eigentlich liste ausgegeben!

      dieses kann man umgehen indem der erste datensatz ausserhalb der schleife gelesen wird und das vergleichfeld frech mit dem inhalt des ersten datensatz beschickt wird, somit wird dann der gruppenwechsel erst dann ausgelöst wenn die gruppe tatsächlich wechselt!

      ich weiss selber das es 1000 wege gibt die nach rom führen! wollte ja nur mal einen definieren!

      sascha fitzner

     Antworten


     
 Liste der Einträge von 62400 bis 62550: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.07s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!