Seite 1 von 1

HSQLDB, Anzahl Datensätze in der Datenbank

Verfasst: Di, 10.07.2007 22:44
von wega
Hallo zusammen,

während der Lebensdauer einer Datenbank werden auch schon einmal Datensätze gelöscht. somit stimmt z.B. die KundenID Nummer, wenn fortlaufend gezählt, nicht mehr mit der Anzahl der wirklich exestierenden Datensätzen überein.

Mit zwei Subroutinen kann ich die wirliche anzahl der datensätze auslesen.

Sub Datenbankkontakt (Sql,ResultSet)
Dim DbName as String 'Datenbankname
Dim DatabaseContext as Object 'Datenbankcontext
Dim DataSource as Object 'Datenbankquelle
Dim Connection as Object 'Verbindung
Dim Statement as Object 'SQL-Statement
dim Eingabe as String 'Eingabe in Inputbox
dim Ergebnis as String 'Auslesen des Resultset
dim i as Integer 'zum Prüfen der Datenfundmenge

Dbname = "Firma"
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName(Dbname)
Connection = dataSource.GetConnection("","")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery(Sql)
end Sub

sub Datensatzanzahl
Dim ResultSet as Object 'Ergebnis einer SQL-Abfrag
Dim Sql as String
Sql = "Select"
Sql = Sql +" count ('"
Sql = Sql +"KundenID"
Sql = Sql + "') from "
Sql = Sql + chr(34)+"Kunden"+chr(34)
Datenbankkontakt(Sql,ResultSet)
if not isNull(resultSet) then
while resultset.next
ergebnis = resultSet.getstring(1) + chr(44)
i=i+1
wend
else
msgbox "kein Ergebnis"
exit Sub
end if
Ergebnis = RTrim(left(ergebnis,(len(ergebnis)-1)))

if i=0 then
msgbox "kein Datensatz gefunden"
exit Sub
end if

msgbox ergebnis 'Anzahl Records = Datensätze <-------Hier die anzahl der wirlichen Datensätze.
end Sub

Ich würde mich freuen, wenn eine/r eine kürzere Möglichkeit gefunden hätte.

mit freundlichem Gruß
Werner

Re: HSQLDB, Anzahl Datensätze in der Datenbank

Verfasst: Mi, 11.07.2007 07:04
von Toxitom
Hallo Werner,

na ja, ob "kürzer" ist so eine Sache - zumindest aber "schneller" ;-)

Du durchläufst ja mit einer Schleife deinen Resultset. Das geht einfacher und schneller, wenn du deien Zeilencursor direkt auf die letzte Zeile setzt - und dann die Zeilennummer ausliest. Also in etwa so:

Code: Alles auswählen

...
Datenbankkontakt(Sql,ResultSet)
if not isNull(resultSet) then
   resultSet.last()
   ergebnis = resultSet.getRow()  'liefert die Nummer des aktuellen Datensates als Long, 1.Zeile = 1
...
Wichtig aber, dass der Resultset alle Datensätze beinhaltet - also nicht größenlimiitert ist und du wahlfrei springen kannst.

Viele Grüße
Thomas

Re: HSQLDB, Anzahl Datensätze in der Datenbank

Verfasst: Mi, 11.07.2007 07:44
von wega
Hallo Thomas,

danke für diesen Hinweis, wieder was dazu gelernt.

mit freundlichem Gruß
Werner