Seite 1 von 1

PostgreSQL und Schemata

Verfasst: Fr, 28.09.2007 14:18
von Christiana
Hallo,

ich arbeite mich neu in Base ein. Habe SQL-Kenntnisse und ein bisschen Erfahrung mit OOo-Makros (lerning by doing).

In meiner PostgreSql-DB, die über JDBC mit OOo verbunden ist, sind meine Tabellen und Views zur besseren Strukturierung in Schemata abgelegt. Das Standard-Schema heißt „public“.
Innerhalb von Base kann ich die einzelnen Schemata auch sehen und auch die betreffende Tabelle „tbl_test“, aber wenn ich mit folgenden Code auf ein selbst erstelltes Schema „test“ zugreifen möchte, erhalte ich eine Fehlermeldung in der mit *** gekennzeichneten Zeile:

Code: Alles auswählen

sub test
	Dim oDatenquelle as Object, oHandler as Object, oDatVerb as Object
	Dim oStatement as Object, oErgSet as Object	
	DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")	
	oDatenquelle = DatabaseContext.getByName("tagebuch")
	oDatVerb = oDatenquelle.getConnection("","")   	
                oStatement = oDatVerb.createStatement()
   	
	oErgSet = oStatement.executeQuery("SELECT ""vorname"" FROM ""test.tbl_test""" ) ***
	Dim s as string
	if not isNull(oErgSet) then
	  Do while oErgSet.next 
	    s = s & oErgSet.getString(1) & CHR(13)	  	
	  loop
	end if	
	MsgBox "Vornamen: " & chr(13) & s	
end sub 
Fehlermeldung siehe Dateianhang!

Merkwürdigerweise funktioniert folgender Code in einem außerhalb von Base gespeicherten Formular:

Code: Alles auswählen

sub test1
    sFile = "H:\Tagebuch\frm_test.odt"       
    sURL = ConvertToURL(sFile) 								
    Dim myProps(0) as New com.sun.star.beans.PropertyValue	
    myProps(0).Name="ReadOnly"								    
    myProps(0).Value = true
    oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, myProps())    

    oForm = oDoc.DrawPage.Forms(0)
    oForm.DataSourceName = "tagebuch"
    oForm.CommandType = 0				'Tabelle
    oForm.Command = "test.tbl_test"  	
    oForm.reload
end sub 
Habe ich bei dem ersten Codebeispiel etwas falsch gemacht? Wenn ich mit diesem Code auf eine Tabelle von „public“ zugreife, funktioniert er. Kann ich generell nicht mit Schemata arbeiten?

Viele Grüße und vielen Dank für eure Hilfe im Voraus!

Christiana
Fehlermeldung
Fehlermeldung
image1.jpg (17.14 KiB) 651 mal betrachtet

Re: PostgreSQL und Schemata

Verfasst: Fr, 28.09.2007 15:14
von komma4
Das zweite Beispiel klappt, weil Basic den string intern korrekt auflöst.

Für SQL musst Du Schema und Feld einzeln 'quoten' (den Punkt nicht!):

Code: Alles auswählen

...FROM ""test"".""tbl_test"" "
letztes, das SQL-abschliessende, Anführungszeichen zur Verdeutlichung abgesetzt.

Klappt's?

Re: PostgreSQL und Schemata

Verfasst: Fr, 28.09.2007 16:33
von komma4
right, wie geschrieben:

Basic braucht die Quotierung der Feldnamen nicht.
SQL (in der SQL-Entwurfsansicht) schon.

Mit "Datenpilot" meinst Du F4, den Datenbankbrowser?
Auch ich sehe dort views: sind die Objekte über Extras>Tabellenfilter... der Base-Datei freigegeben?


SDBC oder JDBC: meine Argumente/Erfahrungen, siehe:
viewtopic.php?f=8&t=14112

Ist das ein Problem (für Dich) einen JDBC-Treiber einzusetzen? Welche Vorzüge siehst Du bei der Verwendung von SDBC?

Re: PostgreSQL und Schemata

Verfasst: Mo, 01.10.2007 09:12
von Christiana
Vielen Dank euch beiden!
Auf die richtige Quotierung bei den Schemata wär ich alleine nicht gekommen.
Prima ist natürlich, dass es auch ohne Quotierung funktioniert. :lol:

Falls du, Basisproblem, es doch einmal mit der JDBC-Anbindung versuchen möchtest,
hier findest du eine gute Anleitung.

Christiana