Seite 1 von 1

Wert aus Abfrage in msgbox anzeigen lassen

Verfasst: Mo 2. Apr 2018, 11:35
von Oisse
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

Re: Wert aus Abfrage in msgbox anzeigen lassen

Verfasst: Mo 2. Apr 2018, 12:45
von F3K Total
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

Re: Wert aus Abfrage in msgbox anzeigen lassen

Verfasst: Mo 2. Apr 2018, 12:56
von Oisse
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

Re: Wert aus Abfrage in msgbox anzeigen lassen

Verfasst: Di 3. Apr 2018, 11:24
von F3K Total
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

Re: Wert aus Abfrage in msgbox anzeigen lassen

Verfasst: Di 3. Apr 2018, 20:18
von Oisse
Super, vielen Dank.
Jetzt ist es um einiges klarer.
Herzliche Grüße
Oisse