Wir sind auf Ihre Unterstützung angewiesen!
💚 BITTE helfen Sie uns HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
-
Oisse
- Beiträge: 3
- Registriert: Sa 3. Okt 2015, 15:23
Beitrag
von Oisse » Mo 2. Apr 2018, 11:35
Hallo Zusammen,
folgenden Code habe ich mir geschrieben, um die Anzahl von Datensätzen anzeigen zu lassen, der aber leider nicht funktioniert.
Warum bitte nicht und was muss ich ändern?
Code: Alles auswählen
Sub open_Query
Dim oDatenbankKontext as Object
DIM oDatenquelle AS OBJECT
Dim oVerbindung as Object
DIM oAbfragen AS OBJECT
DIM loRow AS LONG
DIM loRowMax AS LONG
DIM inStart AS INTEGER
Dim stQuery as string
Rem Dim InErgebnis as Integer
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Hausservice" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oAbfragen = oVerbindung.createStatement()
stQuery = "SELECT COUNT (""ID"") FROM ""Abfrage_Pauschalaufträge"""
InErgebnis = oAbfragen.executeQuery(stQuery)
msgbox InErgebnis
Fehler:
End Sub
Danke schon mal für eure Hilfe
Oisse
-
F3K Total
- Beiträge: 2416
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » Mo 2. Apr 2018, 12:45
Hi,
das Ergebnis der Abfrage ist ein ResultSet mit nur einer Zeile und einer Spalte, deren Wert du auslesen musst.
Code: Alles auswählen
Sub open_Query
Dim oDatenbankKontext as Object
DIM oDatenquelle AS OBJECT
Dim oVerbindung as Object
DIM oAbfragen AS OBJECT
DIM loRow AS LONG
DIM loRowMax AS LONG
DIM inStart AS INTEGER
Dim stQuery as string
Rem Dim InErgebnis as Integer
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Hausservice" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oAbfragen = oVerbindung.createStatement()
stQuery = "SELECT COUNT (""ID"") AS ANZAHL FROM ""Abfrage_Pauschalaufträge"""
InErgebnis = oAbfragen.executeQuery(stQuery)
if InErgebnis.next then
Ergebnis = InErgebnis.columns.getbyNAME("ANZAHL").getint
'oder
'Ergebnis = InErgebnis.getint(1)'erste Spalte
endif
msgbox Ergebnis
Fehler:
End Sub
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
-
Oisse
- Beiträge: 3
- Registriert: Sa 3. Okt 2015, 15:23
Beitrag
von Oisse » Mo 2. Apr 2018, 12:56
Danke für die Antwort, die auch funktioniert
Aber warum brauche ich hier eine if-Anweisung und was hat das mit dem .Next auf sich?
Was bitte macht er hier?
Gruß Oisse
-
F3K Total
- Beiträge: 2416
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » Di 3. Apr 2018, 11:24
Versuche mal dies:
Code: Alles auswählen
Sub open_Query
Dim oDatenbankKontext as Object
DIM oDatenquelle AS OBJECT
Dim oVerbindung as Object
DIM oAbfragen AS OBJECT
DIM loRow AS LONG
DIM loRowMax AS LONG
DIM inStart AS INTEGER
Dim stQuery as string
Rem Dim InErgebnis as Integer
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "Hausservice" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oAbfragen = oVerbindung.createStatement()
stQuery = "SELECT (""ID"") FROM ""Abfrage_Pauschalaufträge"""'viele Zeilen als Ergebnis
SQL_Result = oAbfragen.executeQuery(stQuery)
While SQL_Result.next
nID = SQL_Result.columns.getbyNAME("ID").getint
print nID
wend
Fehler:
End Sub
Hoffe es wird klarer, IF benutze ich dann, wenn das Abfragergebnis nur eine Zeile beinhaltet.
Mit NEXT springt der Cursor im ResultSet auf die nächste Zeile. Bei einem einzeiligen Ergebnis eben auf die erste.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
-
Oisse
- Beiträge: 3
- Registriert: Sa 3. Okt 2015, 15:23
Beitrag
von Oisse » Di 3. Apr 2018, 20:18
Super, vielen Dank.
Jetzt ist es um einiges klarer.
Herzliche Grüße
Oisse
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️