SQL-Abfrage in Macro

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

SQL-Abfrage in Macro

Beitrag von eBayer »

Hallo, ich bin ein blutiger Anfänger, was SQL angeht.
Nun übe ich schon seit einigen Tagen mit Base und bin schon recht weit gekommen, hänge jetzt aber an einem kleinen Problem: Ich möchte in einem Macro einen Report aufrufen. Allerdings soll abhängig davon, ob ich in einer bestimmten Tabelle Daten finde, entweder der eine oder der andere report aufgerufen werden.
Wie kann ich nachdem ich ein SQL-Statement ausgeführt habe, das Ergebnis abfragen? In diesem Fall also die Anzahl Rows. Ich habe mal mein Coding beigefügt. Darin will ich für Testzwecke das ergebnis in einer MsgBox aufzeigen.

Danke für Eure Hilfe im Voraus.


oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = oDatenbankKontext.getByName( "Kunden" )
' Verbindung zur DB herstellen
oVerbindung = oDatenquelle.getConnection( "" , "" )
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
sSQL = "SELECT COUNT( * ) AS Anzahl FROM ""Kinder"" AS ""Kinder"" WHERE ""Ausweis-Nr"" = " + sText
msgbox(sSQL)
oResultSet = oStatement.executeQuery( sSQL )
msgbox(oResultSet.getString("Anzahl")
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: SQL-Abfrage in Macro

Beitrag von komma4 »

Willkommen im Forum.

Code: Alles auswählen

msgbox oResultSet.getString( 1 )
Hier wird die Nummer der Trefferspalte (diesmal ab 1 gezählt) erwartet, nicht der von Dir vergebene Alias.

Andrew hat auch ein Datenbank-Dokument
Und XRay kennst Du auch schon...?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL-Abfrage in Macro

Beitrag von eBayer »

Hallo, danke für die schnelle Antwort.
Hab´s gleich mal probiert, aber leider ohne Erfolg.
Meldung: no data is availlable
Wenn ich aber gleiche Statement per SQL direkt absetze meldet er mir keinen Fehler.... allerdings sehe ich das Ergebnis ja leider dort nicht.
Wenn ich eine Abfrage über den Abfrageassistenten generiere ist das Ergebnis 9 - stimmt.
Und der von mir benutzte Code ist eine Kopie aus der Abfrage.

Hilfeeeeee, ich habe alles versucht, komme hier aber nicht weiter.

Gruß
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: SQL-Abfrage in Macro

Beitrag von komma4 »

Wenn Dir eine Abfrage direkt ausgeführt keine Fehlermeldung liefert, dann hast Du noch etwas im Code falsch...

Bitte zeige uns wie sText gesetzt wird.
[Kannst Du auch selbst mit Xray debuggen: sSQL nach dem Zusammensetzen anschauen]

Welches Spaltenformat hat Abfrage-Nr?
Welche Datenbank nutzt Du? Welches OOo?

(hier [OOo3/Linux m. interner HSQLDB] klappt die Abfrage auch mit Basic und liefert ein korrektes Ergebnis]

P.S.:
Gerade nochmal Deinen Code angeschaut: Dir fehlt das Positionieren auf den ersten Datensatz des resultset:

Code: Alles auswählen

' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )

' xray oresultset
while oResultSet.next()
   ' erste Spalte ausgeben
   msgbox oResultSet.getString( 1 )
Wend
Hole Dir bei Andrew das BASE-Dokument!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: SQL-Abfrage in Macro

Beitrag von eBayer »

Bingoooooooo
kaum macht man´s richtig, schon funktioniert´s.
Danke, Du hast mir sehr geholfen.
DEN Fehler werde ich ganz sicher nicht wiederholen.
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten