wheely: Tabular Data Control + Datumsabfrage

Hallo,

ich habe eine Datenbank, die auf dem Tabular Data Control Prinzip aufgebaut ist (ähnlich der wie in Selfhtml beschrieben).

Jetzt sollen aus dieser Datenbank nur die Daten mit dem Datum herausgefilterert und angezeigt werden, die höher als das jeweilige Tagesdatum sind. Z. B. wenn heute der 22.07.04 ist sollen nur die gefunden werden, die ab dem 23.07.04 und höher liegen.

Wie kann man das mit einem JavaScript einfach lösen?

Feld1|Feld2|Feld3|Feld4
21.03.2004|Text|Text|Text
15.07.2004|Text|Text|Text
18.08.2004|Text|Text|Text
01.09.2004|Text|Text|Text
28.07.2004|Text|Text|Text
19.07.2004|Text|Text|Text

Vielen Dank für Rat- und Lösungsvorschläge.

Gruß
wheely

  1. Hello,

    ich habe eine Datenbank, die auf dem Tabular Data Control Prinzip aufgebaut ist (ähnlich der wie in Selfhtml beschrieben).

    Jetzt sollen aus dieser Datenbank nur die Daten mit dem Datum herausgefilterert und angezeigt werden, die höher als das jeweilige Tagesdatum sind. Z. B. wenn heute der 22.07.04 ist sollen nur die gefunden werden, die ab dem 23.07.04 und höher liegen.

    Mit "normalem JavaScript" geht das gar nicht, da JavaScript keine eigenen Zugriffsrechte auf die Datei hat. Mann müsste sie sonst ggf. vollständig als Textstream in ein Frame oder ein Hidden-Field einlesen. Dann könnte split() Dein Freund werden.

    Mit DHTML könnte es natürlich auch klappen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      ich habe eine Datenbank, die auf dem Tabular Data Control Prinzip aufgebaut ist (ähnlich der wie in Selfhtml beschrieben).

      Jetzt sollen aus dieser Datenbank nur die Daten mit dem Datum herausgefilterert und angezeigt werden, die höher als das jeweilige Tagesdatum sind. Z. B. wenn heute der 22.07.04 ist sollen nur die gefunden werden, die ab dem 23.07.04 und höher liegen.

      Mit "normalem JavaScript" geht das gar nicht, da JavaScript keine eigenen Zugriffsrechte auf die Datei hat. Mann müsste sie sonst ggf. vollständig als Textstream in ein Frame oder ein Hidden-Field einlesen. Dann könnte split() Dein Freund werden.

      Mit DHTML könnte es natürlich auch klappen.

      Hi,

      die Datenbank geht über DHTML. Die Daten, die in einer externen Textdatei vorliegen, werden per <span datafld="Feld1"></span> etc. in die Tabelle geschrieben. Jetzt muss man auf das entsprechende Feld1 zugreifen können und irgendwie einen Datumsvergleich definieren wie die Daten ausgeben werden sollen - nur wie?

      Gruß
      wheely

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

  2. Jetzt sollen aus dieser Datenbank nur die Daten mit dem Datum herausgefilterert und angezeigt werden, die höher als das jeweilige Tagesdatum sind. Z. B. wenn heute der 22.07.04 ist sollen nur die gefunden werden, die ab dem 23.07.04 und höher liegen.

    Ein Datumsvergleich mit JS ist ganz einfach:

    var d1 = new Date();
    var d2 = new Date('jan 1 2004');

    alert(d2 + d1);

    Struppi.

    1. Jetzt sollen aus dieser Datenbank nur die Daten mit dem Datum herausgefilterert und angezeigt werden, die höher als das jeweilige Tagesdatum sind. Z. B. wenn heute der 22.07.04 ist sollen nur die gefunden werden, die ab dem 23.07.04 und höher liegen.

      Ein Datumsvergleich mit JS ist ganz einfach:

      var d1 = new Date();
      var d2 = new Date('jan 1 2004');

      alert(d2 + d1);

      Struppi.

      Hi,

      und wie wende ich dann diesen Vergleich auf diese Daten

      Feld1|Feld2|Feld3|Feld4
      21.03.2004|Text|Text|Text
      15.07.2004|Text|Text|Text
      18.08.2004|Text|Text|Text
      01.09.2004|Text|Text|Text
      28.07.2004|Text|Text|Text
      19.07.2004|Text|Text|Text

      an, die in der Textdatei stehen und wie nehme ich dann Bezug auf Feld1? Geht das dann mit var datum ="Feld1" ?
      Wie müsste ich das dann programmieren sein?

      Danke & Gruß
      wheely

      1. und wie wende ich dann diesen Vergleich auf diese Daten

        Feld1|Feld2|Feld3|Feld4
        21.03.2004|Text|Text|Text
        15.07.2004|Text|Text|Text
        18.08.2004|Text|Text|Text
        01.09.2004|Text|Text|Text
        28.07.2004|Text|Text|Text
        19.07.2004|Text|Text|Text

        an, die in der Textdatei stehen und wie nehme ich dann Bezug auf Feld1? Geht das dann mit var datum ="Feld1" ?
        Wie müsste ich das dann programmieren sein?

        du brauchst ein Array.
        var daten = new array();

        dann du musst die Datensätze spliten http://de.selfhtml.org/javascript/objekte/string.htm#split
        var satz = [...].split('|');

        (ich hab aber keine Ahnung wie du an die Daten da oben kommst, wie greifst du auf diese zu?)

        Dann den ersten Wert entsprechend umformen

        var r = /(\d*).(\d*)/;
        r.exec(satz[0]);
        var datum = satz[0].replace(r, RegExp.$2 + '.' +  RegExp.$1 ).replace(/./g, '/');

        und dem dein Array zuweisen am sinnvollsten als objekt:

        daten[daten.length] = {
        datum: datum,
        text1:satz[1],
        text2:satz[2],
        text3:satz[3]
        };

        .....

        Dann sortieren:

        daten.sort(mySort);

        function mysort(a,b)
        {
            return a.datum - b.datum; // oder a.datum > b.datum oder a.datum < a.datum
        }

        (ungetestet)

        Struppi.

        1. und wie wende ich dann diesen Vergleich auf diese Daten

          Feld1|Feld2|Feld3|Feld4
          21.03.2004|Text|Text|Text
          15.07.2004|Text|Text|Text
          18.08.2004|Text|Text|Text
          01.09.2004|Text|Text|Text
          28.07.2004|Text|Text|Text
          19.07.2004|Text|Text|Text

          an, die in der Textdatei stehen und wie nehme ich dann Bezug auf Feld1? Geht das dann mit var datum ="Feld1" ?
          Wie müsste ich das dann programmieren sein?

          du brauchst ein Array.
          var daten = new array();

          dann du musst die Datensätze spliten http://de.selfhtml.org/javascript/objekte/string.htm#split
          var satz = [...].split('|');

          (ich hab aber keine Ahnung wie du an die Daten da oben kommst, wie greifst du auf diese zu?)

          Dann den ersten Wert entsprechend umformen

          var r = /(\d*).(\d*)/;
          r.exec(satz[0]);
          var datum = satz[0].replace(r, RegExp.$2 + '.' +  RegExp.$1 ).replace(/./g, '/');

          und dem dein Array zuweisen am sinnvollsten als objekt:

          daten[daten.length] = {
          datum: datum,
          text1:satz[1],
          text2:satz[2],
          text3:satz[3]
          };

          .....

          Dann sortieren:

          daten.sort(mySort);

          function mysort(a,b)
          {
              return a.datum - b.datum; // oder a.datum > b.datum oder a.datum < a.datum
          }

          (ungetestet)

          Struppi.

          Hi,

          das Probleme habe ich nun anderes gelöst bekommen. Jetz macht mir noch die Sortierung Kopfschmerzen. Die Sortierung ist z. B.:

          04.08.2004
          15.07.2004
          25.07.2004
          26.07.2004
          28.08.2004

          Dabei soll aber der 04.08.2004 vor dem 28.08.2004 kommen. Wie stellt man das an? Die Daten liegen in einer *.txt Datei vor.

          Danke
          wheely

          1. das Probleme habe ich nun anderes gelöst bekommen. Jetz macht mir noch die Sortierung Kopfschmerzen. Die Sortierung ist z. B.:

            04.08.2004
            15.07.2004
            25.07.2004
            26.07.2004
            28.08.2004

            Dabei soll aber der 04.08.2004 vor dem 28.08.2004 kommen. Wie stellt man das an? Die Daten liegen in einer *.txt Datei vor.

            wie schon gesagt, wandel den Text in ein Datum um und dann kannst du es so sortieren wie ich es schon geschrieben habe.

            Aber wie liest du eine Textdatei mit JS ein? das geht nicht oder benutz du Java?

            Struppi.

            1. das Probleme habe ich nun anderes gelöst bekommen. Jetz macht mir noch die Sortierung Kopfschmerzen. Die Sortierung ist z. B.:

              04.08.2004
              15.07.2004
              25.07.2004
              26.07.2004
              28.08.2004

              Dabei soll aber der 04.08.2004 vor dem 28.08.2004 kommen. Wie stellt man das an? Die Daten liegen in einer *.txt Datei vor.

              wie schon gesagt, wandel den Text in ein Datum um und dann kannst du es so sortieren wie ich es schon geschrieben habe.

              Aber wie liest du eine Textdatei mit JS ein? das geht nicht oder benutz du Java?

              Struppi.

              Hoi,

              benutze folgendes Prinzip mit der Suchfunkion:

              http://de.selfhtml.org/dhtml/modelle/datenanbindung.htm#tdc

              Gruß
              wheely

              1. benutze folgendes Prinzip mit der Suchfunkion:

                http://de.selfhtml.org/dhtml/modelle/datenanbindung.htm#tdc

                OK. Aber du hast ein JS Array mit Daten?
                Und ein Datenfeld ist das Datum?

                In meinem letzten vorschlag hatte ich was vergessen:

                satz[0] ist das datum als string in der deutschen form TT/MM/JJJJ

                var r = /(\d*).(\d*)/;
                r.exec(satz[0]);
                var datum = satz[0].replace(r, RegExp.$2 + '.' +  RegExp.$1 ).replace(/./g, '/');

                und hier erzeugst du das Objekt:

                daten[daten.length] = {
                datum: new Datum(datum),
                text1:satz[1],
                text2:satz[2],
                text3:satz[3]
                };

                Mit dem new Datum funktioniert das auch mit dem sortieren.

                Struppi.

                1. benutze folgendes Prinzip mit der Suchfunkion:

                  http://de.selfhtml.org/dhtml/modelle/datenanbindung.htm#tdc

                  OK. Aber du hast ein JS Array mit Daten?
                  Und ein Datenfeld ist das Datum?

                  In meinem letzten vorschlag hatte ich was vergessen:

                  satz[0] ist das datum als string in der deutschen form TT/MM/JJJJ

                  var r = /(\d*).(\d*)/;
                  r.exec(satz[0]);
                  var datum = satz[0].replace(r, RegExp.$2 + '.' +  RegExp.$1 ).replace(/./g, '/');

                  und hier erzeugst du das Objekt:

                  daten[daten.length] = {
                  datum: new Datum(datum),
                  text1:satz[1],
                  text2:satz[2],
                  text3:satz[3]
                  };

                  Mit dem new Datum funktioniert das auch mit dem sortieren.

                  Struppi.

                  Nein, habe kein JS Array mit Daten. Wenn die Daten wie folgt vorliegen:

                  2004.07.02
                  2004.08.10
                  2004.07.08
                  2004.07.30

                  kann ich die Daten aufsteigend sortieren lassen. Das klappt dann wunderbar. Sieht bei der Anzeige aber etwas komisch aus.

                  wheely

                  1. Nein, habe kein JS Array mit Daten. Wenn die Daten wie folgt vorliegen:

                    So langsam werd ich verwirrt.

                    Du fragst doch nach JS oder?

                    2004.07.02
                    2004.08.10
                    2004.07.08
                    2004.07.30

                    Bis jetzt hab ich aber noch keine einizige ZEile JS Code von dir gesehen.

                    kann ich die Daten aufsteigend sortieren lassen. Das klappt dann wunderbar. Sieht bei der Anzeige aber etwas komisch aus.

                    Wie klappt das sortieren.

                    Ich glaub du solltest wirklich mal langsam ein bisschen von deinem Code preisgeben. Denn es ist müsig sich den Kopf über was zu zerbrechen ohne zu Wissen ob es überhaupt einen Sinn macht. Da ich nicht mal weiß ob du überhaupt von JS sprichst.

                    Letzlich hab ich dir schon einiges an code geliefert, aber du sagst nicht ob der funktioniert, bzw. was nciht funktioniert.

                    Struppi.

                    1. Ich hab mir vorher dieses Kapitel noch nicht durchgelesen http://de.selfhtml.org/dhtml/modelle/datenanbindung.htm#tdc, falls du davon sprichst, das ist ActiveX. Ich hab keinen Browser wo das funktioniert. Insofern habe ich auch keinerlei Ahnung davon. Das heißt ich kann dir gar nicht helfen.

                      Das das in selfhtml unter JS läuft ist IMHO ein Fehler da dort auch keine Zeile JS Verwendung findet.

                      Nichts für ungut.

                      struppi.