HSQLDB, Anzahl Datensätze in der Datenbank

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

HSQLDB, Anzahl Datensätze in der Datenbank

Beitrag 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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: HSQLDB, Anzahl Datensätze in der Datenbank

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: HSQLDB, Anzahl Datensätze in der Datenbank

Beitrag von wega »

Hallo Thomas,

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

mit freundlichem Gruß
Werner
Antworten