Tabular Data Control + Datumsabfrage
wheely
- datenbank
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
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
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
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.
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
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|Textan, 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.
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|Textan, 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
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.2004Dabei 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.
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.2004Dabei 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
benutze folgendes Prinzip mit der Suchfunkion:
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.
benutze folgendes Prinzip mit der Suchfunkion:
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
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.
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.