PreviousDatabaseRow-Problem nach While-Schleife
Verfasst: 31.07.2009 11:48
Hallo,
wenn ich den untenstehenden Code ausführe, wird der letzte Datensatz nicht angezeigt.
Mein Verständnis: durch die Whileschleife springt er über den letzten Datensatz.
Soweit ok.
Mit PreviousDatabaseRow springe ich ein Satz zurück.
Somit müßte mit GetDatabaseString(#Datenbank,Spalte) der letzte Datensatz auszulesen sein.
Genau das macht er nicht. Warum?
Ein anschließendes FirstDatabaseRow funktioniert.
Da springt er wieder korrekt zum ersten Datensatz.
wenn ich den untenstehenden Code ausführe, wird der letzte Datensatz nicht angezeigt.
Mein Verständnis: durch die Whileschleife springt er über den letzten Datensatz.
Soweit ok.
Mit PreviousDatabaseRow springe ich ein Satz zurück.
Somit müßte mit GetDatabaseString(#Datenbank,Spalte) der letzte Datensatz auszulesen sein.
Genau das macht er nicht. Warum?
Ein anschließendes FirstDatabaseRow funktioniert.
Da springt er wieder korrekt zum ersten Datensatz.
Code: Alles auswählen
#db0=0
UseSQLiteDatabase()
DatabaseFile$ = "i:\purebasic\forumexamples\bestand.sqlite"
;DatabaseFile$ = GetTemporaryDirectory()+"\Database.sqlite"
Debug DatabaseFile$
If CreateFile(#db0, DatabaseFile$)
CloseFile(#db0)
If OpenDatabase(#db0, DatabaseFile$, "", "")
DatabaseUpdate(#db0, "CREATE TABLE bestand (Dsnr INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE Not NULL, Name VARCHAR(40) , Stueck NUMERIC(10) , Preis NUMERIC(10,2))")
DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('"+Name$+"', '"+Stueck$+"', '"+Str(Preis)+"')")
DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('Tastatur', '5', '25.55')")
DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('DVD-Laufwerk', '20', '33.00')")
DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('Festplatte 160GB', '23', '133.00')")
DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('USB-Stick 2GB', '44', '3.00')")
If DatabaseQuery(#db0, "SELECT * FROM bestand")
While NextDatabaseRow(#db0)
Debug "Datensatznummer: "+ GetDatabaseString(#db0, 0)
Debug "Artikel : "+ GetDatabaseString(#db0, 1)
Debug "Stück : " + GetDatabaseString(#db0, 2)
Debug "Preis : "+ GetDatabaseString(#db0, 3)
Wend
EndIf
FirstDatabaseRow(#db0)
While NextDatabaseRow(#db0)
;Debug GetDatabaseString(#db0, 0)
Wend
;FirstDatabaseRow(#db0)
PreviousDatabaseRow(#db0)
Debug "_______________________"
Debug ""
Debug "Datensatznummer: "+ GetDatabaseString(#db0, 0)
Debug "Artikel : "+ GetDatabaseString(#db0, 1)
Debug "Stück : " + GetDatabaseString(#db0, 2)
Debug "Preis : "+ GetDatabaseString(#db0, 3)
FinishDatabaseQuery(#db0)
Else
Debug "Can't open database !"
EndIf
Else
Debug "Can't create the database file !"
EndIf