Anspringen eines Datensatzes innerhalb einer SQLite-Tabelle
Verfasst: 31.07.2009 12:55
Hallo,
ich möchte einen bestimmten Datensatz innerhalb einer SQLite-Tabelle anspringen, möchte aber die Blätterfunktion innerhalb der Tabeller behalten.
Aus dem untenstehenden Code kann man meine derzeitige Lösung ersehen.
Gibt es eine einfachere elegante Lösung, die ich bisher nicht gefunden habe?
ich möchte einen bestimmten Datensatz innerhalb einer SQLite-Tabelle anspringen, möchte aber die Blätterfunktion innerhalb der Tabeller behalten.
Aus dem untenstehenden Code kann man meine derzeitige Lösung ersehen.
Gibt es eine einfachere elegante Lösung, die ich bisher nicht gefunden habe?
Code: Alles auswählen
#db0=0
dbzaehler=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)
dbzaehler=dbzaehler+1
Wend
EndIf
;letzten Datensatz ermitteln
Result = DatabaseQuery(#db0, "SELECT max(Dsnr) from bestand");"SHOW TABLE STATUS FROM bestand LIKE 'Dsnr'")
If Result = 0
Debug DatabaseError()
EndIf
NextDatabaseRow(#db0)
Debug "Dies ist die letzte Datensatznummer dieser Tabelle: "
Debug GetDatabaseString(#db0, 0)
Debug "oder so: " + Str(dbzaehler)
;zur Ausgangslage zurück
DatabaseQuery(#db0, "SELECT * FROM bestand")
; wir wollen ein Datensatz anspringen, aber das blättern innerhalb der Tabelle soll erhalten bleiben
; in diesem Beispiel wollen wir den 3.Datensatz anspringen
dbs=3
For i=1 To dbs
NextDatabaseRow(#db0)
Next
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