(SQL) Gegestückt zu record.MoveNext ...
Holger Lersch
- datenbank
0 Holger Lersch0 Stefan Falz0 Tom
Hallo Leute !
... konkret :
ich lese mit
SQL="SELECT MAX(Datum) AS lDatum FROM Tabelle"
db.OPEN SQL,con
db.Move_einen_Vorher
lDatum = db("ldatum")
db.CLOSE
Also ich brauch nicht das maximale Datum sondern das preMaximale Datum aus der Tabelle,
dazu würde ich gern den Zeiger halt eben wieder einen Datensatz zurücksetzen.
THX4HELP
Gruß
Holger
Nochma Hi
Sorry, ich vergaaas zu sagen womit ich hantiere :
BTW : db.MoveBack funktioniert nicht.
Gruß
Holger
SQL="SELECT MAX(Datum) AS lDatum FROM Tabelle"
db.OPEN SQL,con
db.Move_einen_Vorher
lDatum = db("ldatum")
db.CLOSEAlso ich brauch nicht das maximale Datum sondern das preMaximale Datum aus der Tabelle,
dazu würde ich gern den Zeiger halt eben wieder einen Datensatz zurücksetzen.
Hallo,
mit deinem SQLString liest Du nur einen einzigen Satz aus,
daher kannst Du auch nicht zum vorherigen springen.
<%
SQL="SELECT TOP 2 Datum FROM Tabelle ORDER BY Datum DESC"
rs.OPEN SQL,conn
If Not rs.EOF Then
rs.MoveNext
lDatum = rs.Fields("Datum")
End if
rs.CLOSE
%>
TOP n geht allerdings nicht mit Access (nur SQL Server)
Daher sieht bei Access der SQL-String so aus:
<%
SQL="SELECT Datum FROM Tabelle ORDER BY Datum DESC"
rs.OPEN SQL,conn
If Not rs.EOF Then
rs.MoveNext
lDatum = rs.Fields("Datum")
End if
rs.CLOSE
%>
Alternativ kannst Du auch folgenden SQL-String basteln
<%
SQL = "SELECT max(Datum) as lDatum FROM Tabelle1 First WHERE First.Datum < (Select max(Datum) as l2Datum FROM Tabelle1 Second)DESC"
rs.OPEN SQL,conn
If Not rs.EOF Then
lDatum = rs.Fields("lDatum")
End if
rs.CLOSE
%>
Tschau, Stefan
SQL="SELECT TOP 2 Datum FROM Tabelle ORDER BY Datum DESC"
In Oracle würde ich schreiben:
"SELECT Datum FROM Tabelle where rowid=2 ORDER BY Datum DESC;"
Aber ob Deine M$-DB das kann ... ?
SQL="SELECT TOP 2 Datum FROM Tabelle ORDER BY Datum DESC"
In Oracle würde ich schreiben:
"SELECT Datum FROM Tabelle where rowid=2 ORDER BY Datum DESC;"Aber ob Deine M$-DB das kann ... ?
Hallo Michael,
also ob rowid dir das gewünschte Ergebnis bringt ???
Rowid ist eigentlich ja eine der Zeile zugehörige
Nummer, die auch bei einer evtl. Sortierung an der
Zeile kleben bleibt.
Probier mal:
"SELECT rowid, Datum FROM Tabelle ORDER BY Datum ASC;" und
"SELECT rowid, Datum FROM Tabelle ORDER BY Datum DESC;"
Desweiteren sieht unsere rowid so aus: 00001BB0.0005.0005
und bei einer Abfrage "WHERE rowid = 2" kommt nur der Fehler:
ORA-00932: inconsistent datatypes
rownum geht auch nicht, da erst nach der Query die rownum
zugewiesen wird und von daher bei einer Abfrage auf rownum = 2
"No rows selected" erscheint.
Tschau, Stefan
also ob rowid dir das gewünschte Ergebnis bringt ???
Rowid ist eigentlich ja eine der Zeile zugehörige
Nummer, die auch bei einer evtl. Sortierung an der
Zeile kleben bleibt.
Sorry, ich meinte in der Tat rownum. (Ich sollte einfach keine Syntax mehr posten.)
rownum geht auch nicht, da erst nach der Query die rownum
zugewiesen wird und von daher bei einer Abfrage auf rownum = 2
"No rows selected" erscheint.
Habe ich nicht ausprobiert. Im Zweifelsfalle eine View dazwischenschalten und fertig.
Hallo Holger
db.Move_einen_Vorher
Nur zur Ergänzung, die Methode zum "zurückblättern" in einem Recordset wäre "db.MovePrevious".
Wie aber schon erwähnt, muss im Recordset vor dem aktuellen Datensatz noch ein weiterer Datensatz vorhanden sein.
Grüsse
Tom