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
HSQLDB, Anzahl Datensätze in der Datenbank
Moderator: Moderatoren
Re: HSQLDB, Anzahl Datensätze in der Datenbank
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:
Wichtig aber, dass der Resultset alle Datensätze beinhaltet - also nicht größenlimiitert ist und du wahlfrei springen kannst.
Viele Grüße
Thomas
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
...
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: HSQLDB, Anzahl Datensätze in der Datenbank
Hallo Thomas,
danke für diesen Hinweis, wieder was dazu gelernt.
mit freundlichem Gruß
Werner
danke für diesen Hinweis, wieder was dazu gelernt.
mit freundlichem Gruß
Werner