Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Datensatznummer





Frage

Mein Name ist Paul, und arbeite mich gerade in ASP ein. Früher habe ich Datenbankprogramme in Clipper / DBASE geschrieben. Dort gabe es eine Datensatzfunktion -RECNO() Mit satznr : =RECNO() wurde der Variable " satznr " automatisch der aktuelle Stand des Datensatzzeigers zugewiesen. Nun Versuche ich dies unter ODBC - Verbindung auf eine ACCESS 2.0 Datenbank-Tabelle. Ich doktere nun jetzt schon einen Tag damit rum, und bekomme einfach die Datensatznummer nicht auf den Bildschirm ! mit -Respons.Write obRS.MoveLast bekomme ich eine Fehlermeldung, "kann Daten nicht von hinten holen" anstatt die Nummer des letzten Datensatzes auszugeben. mit -Respons.Write obRS.Move 125 bekomme ich statt der Zahl 125 auch kein Ergebnis mit -Response.Write obRS.AbsolutePosition funktioniert auch nicht ! Mir geht es nicht darum die Feldinhalte des Datensatzes auzugeben, das funktioniert, sondern die aktuelle Datensatz-Nummer auf dem Bildschirm ! Was mache ich grundsätzlich falsch ??

Antwort 1 von Sir_Hilly

Du gibst die Datensätze doch sicher in einer Schleife aus. Setz doch in der Schleife einfach ne variable die bei jedem widerholen hochzählt.

Dann kannst diesen Wert auf den Bildschirm schreiben:

x=1
Do While Not obRS.EOF
Response.write x
obRS.movenext
x=x+1
loop

das mit absolute position geht sicher auch nur muss das der cursor unterstützen ich glaub cursortype muss
adOpenKeyset o. adOpenStatic sein und cursorlocation: aduseclient
das du auf absoluteposition zugreifen kannst

Gruß

Antwort 2 von Marie

hilly, vielleicht hat er ja nur immer bei response das e vergessen ;-)))

Und danke für die Mail vom letzten Freitag :-)

Aber mal im ernst, wenn du mit x durchzählen willst, musst Du da nicht zuerst mit move first auf den ersten Datensatz gehen??? Sonst fängst am Ende in der Mitte an. Aber ich glaub das hilft ihm nicht, er will ja die Nummer des aktuellen Datensatzes ermitteln, da bin ich auch schon mal dran gescheitert. Weiss nimmer wie ich das gelöst hab.

Also in der Hilfe von A97 steht, dass Du zuerst moveLast, dann move first und dann erst anfangen sollst runterzuzählen, ich blick das auch net.

Sub AbsolutePositionX()

Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim strMessage As String

Set dbsNorthwind = OpenDatabase("Nordwind.mdb")
' AbsolutePosition funktioniert nur mit
' Dynaset oder Snapshot.
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Personal", _
dbOpenSnapshot)

With rstEmployees
' Recordset auffüllen.
.MoveLast
.MoveFirst

' Recordset durchlaufen.
Do While Not .EOF
' Informationen zum aktuellen Datensatz

' anzeigen. 1 zum Wert von AbsolutePosition
' addieren, da die Werte mit Null beginnen.
strMessage = "Personal: " & !Nachname & vbCr & _
"(Datensatz " & (.AbsolutePosition + 1) & _
" von " & .RecordCount & ")"
If MsgBox(strMessage, vbOKCancel) = vbCancel _
Then Exit Do
.MoveNext
Loop

.Close
End With

dbsNorthwind.Close

End Sub

Gruß und schlaf gut

Marie

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: