Seite 1 von 1

Abfrage mit Parametern direkt als Makro ausführen

Verfasst: Mi, 03.11.2010 12:58
von AtzeLenin
Hallo Leute,

Ich versuche eine vorgefertigte Abfrage mit einem Makro aufzurufen. Das Funktioniert auch. Wenn in der Abfrage allerdings Parameter angefordert werden gibt es eine Exeception - ist ja auch klar, denn ich übergebe keine Parameter und ich hab nicht den blassesten Schimmer wo und wie ich die Parameter übergebe. Kann mir bitte jemand sagen wie das geht?

Hier mein Test-Code:
Code:

Code: Alles auswählen

   DataBaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   DataSource = DataBaseContext.getByName("Datenbank")

   con = DataSource.GetConnection("","")
   Connection = con.createStatement()

   abfrage = con.getQueries().getByName("Abfrage")

   sql = Connection.executeQuery(abfrage.command)
   If Not IsNull(sql) Then
     sql.next
     print sql.getString(1)
   End If


Danke für euer Hirnschmalz! :D
RF!

Re: Abfrage mit Parametern direkt als Makro ausführen

Verfasst: Mi, 03.11.2010 13:47
von DPunch
Aloha
AtzeLenin hat geschrieben:Kann mir bitte jemand sagen wie das geht?
Gar nicht.
Parameter sind eine "Komfortfunktion" von Base, per Makro gehst Du aber direkt an die Datenbank (eingebettete HSQL-DB oder was Du eben für eine DB benutzt).

Noch ein Hinweis:
Abfragen der Art

Code: Alles auswählen

   If Not IsNull(sql) Then
sind überflüssig, das Ergebnis von executeQuery kann nie null sein.

Re: Abfrage mit Parametern direkt als Makro ausführen

Verfasst: Mi, 03.11.2010 17:02
von AtzeLenin
Wenn ich mir die API angucke, kann ich das schwer glauben. Gibts nicht gabs bisher nicht... Klar krieg ich das auch manuell gut hin, aber ich dachte vielleicht lässt es sich mit Abfragen besser verwalten.

Aber es gibt doch bestimmt ein UNO um die Werte zu setzen... Verrückt.

Trotzdem erstmal Danke!

Re: Abfrage mit Parametern direkt als Makro ausführen

Verfasst: Mi, 03.11.2010 17:41
von DPunch
Aloha
AtzeLenin hat geschrieben:Wenn ich mir die API angucke, kann ich das schwer glauben.
Wie gesagt, die Parameterabfrage wird von Base und nur von Base gehandled - mit der Parametereingabe setzt Base das SQL-Statement zusammen und übergibt erst dieses an die Datenbank.
Im Endeffekt eine GUI-Funktion von Base als Frontend (aus diesem Grund funktionieren Abfragen mit Parametern auch nicht, wenn das Häkchen bei "SQL direkt ausführen" gesetzt ist).
Per Makro greifst Du aber direkt auf die Datenbank zu.