gezielter Datensatzzugriff
Jürgen Höfs
- datenbank
Hallo zusammen!
Ich habe seit kurzem eine eigene Homepage, in der ich Zitate und Aphorismen, die in einer Datenbank gespeichert sind, präsentiere. (An dieser Stelle herzlichen Dank an Stefan Münz für Selfhtml - ich hatte nämlich zuvor KEINEN SCHIMMER von der Materie.
Doch zu meiner Frage: Gibt es noch mehr Möglichkeiten, in einem einfachen Datenbankmodell (Tabular Data Control (TDC)) auf Datensätze zuzugreifen, als mit nextPage() und previousPage()? Ich habe zudem mit dem Befehl recordnumber hantiert, doch leider wird immer nur der erste Datensatz aufgerufen. Ich will damit aus der Datenbank zufällige Datensätze aufrufen. Ich habe bereits im Internet nach Lösungen gesucht, doch nichts brauchbares finden können. Wißt ihr, wie das Problem zu lösen ist?
Vielen Dank im voraus.
Grüße
Jürgen Höfs
Hallo,
von TDC habe ich keinen blassen Schimmer. Ich kann dir nur raten so etwas mit SQL zu machen, damit sind solche Sachen (und noch anspruchsvollere) ein Witz. Einfach jedem Eintrag eine Nr. verpassen und mittels einer Zufallszahl auf einen Datensatz zugreifen.
bis danndann
Thomas
Moin Jürgen,
zuerst eine Vorbemerkung: Dir ist hoffentlich bewußt, daß TDC nur vom Internet Explorer 4 und 5 unterstützt wird? Mit allen anderen Browsern sieht man gar nichts!
Nun zu Deiner Frage: außer nextPage, previousPage und RecordNumber gibt es noch MoveTo. Sowohl RecordNumber als auch MoveTo zeigen allerdings nur eine Wirkung, wenn Du die Daten anders als in SELFHTML beschrieben anbindest!
Stefan benutzt in SELFHTML ausschließlich die Datenanbindung über <table datasrc=#Datenbank>, hier mußt Du allerdings die Möglichkeit nutzen, _direkt_ im <span>, <img> oder sonstigem Tag die Datenquelle über <span datasrc=#Datenbank datafld="Datenfeld"> die Datenbindung herzustellen. Dann kannst Du über MoveTo / RecordNumber _direkt_ einzelne Datensätze ansteuern und über ein kurzes Javascript weiterhin blättern (nextPage und previousPage funktionieren dann nämlich nicht mehr einwandfrei; Probleme gibt es, wenn vom ersten Datensatz zurück oder vom letzten vorwärts geblättert werden soll).
Infos dazu habe ich irgendwo unterhalb von http://www.microsoft.com/workshop/author/dhtml/ gefunden, waren allerdings sehr gut versteckt! Dort gibt es auch ein Beispiel zur zufälligen Auswahl von Datensätzen.
Die genaue Adresse weiß ich leider nicht mehr, ich habe mir allerdings die Seiten runtergeladen und mittlerweile auch weiterentwickelt, die Sourcen sind aber leider an meinem Arbeitsplatz und ich kann sie erst Dienstag oder spätestens Mittwoch hier ins Forum stellen... Vielleicht bist Du ja bis dahin selbst bei Microsoft fündig geworden (die Seite heißt - glaube ich - DBADVERTS.HTM, nur den Pfad weiß ich nicht!)
Falls Du bis Mittwoch nichts anderes gepostet hast, werde ich die entsprechenden Sourcen hier veröffentlichen.
Gruß
Dirk
Moin Jürgen,
zuerst mal eine Vorbemerkung zu meiner letzten Nachricht: es war nicht MoveTo / RecordNumber was ich meinte, sondern Move und AbsolutePosition. Der Move-Befehl kann irgendwie mit Lesezeichen in der Datendatei arbeiten, wie habe ich aber auch noch nicht herausgefunden!
Aber hier eine kurze Lösung für Dein Problem:
var aktiv1;
function Zufall()
{
var n = Math.floor(Math.random() * Stammdaten.recordset.RecordCount)+1;
Stammdaten.recordset.AbsolutePosition = n;
aktiv1 = window.setTimeout("Zufall()",2000);
}
function Ende()
{
window.clearTimeout(aktiv1);
}
Über die Funktion Zufall wird alle 2 Sekunden ein zufälliger Datensatz aus der Datendatei (hier: Stammdaten) ausgewählt und angezeigt. Mit der Funktion Ende wird dieses automatische Blättern wieder beendet.
Wichtig ist dabei, daß die Daten _nicht_ wie in SELHTML beschrieben über <table datasrc=... datapagesize=1> angebunden werden, sondern direkt bei jedem einzelnen Datenfeld mit <span datasrc=... datafld=...>, da sonst die Auswahl über AbsolutePosition nicht funktioniert.
Ein komplettes Beispiel für Datenanbindung mit Suchen, Blättern und Zufallsfunktion findest Du unter http://home.t-online.de/home/dfr-software/stammdt.htm (macht natürlich nur Sinn mit IE4 bzw. IE5)!
Ich hoffe, daß ich Dir helfen konnte.
Gruß
Dirk