PostgreSQL und Schemata

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

PostgreSQL und Schemata

Beitrag 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) 653 mal betrachtet
OOo 3.1 mit WIN XP SP 3 und PostgreSQL 8.2
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: PostgreSQL und Schemata

Beitrag 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?
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: PostgreSQL und Schemata

Beitrag 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?
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)
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: PostgreSQL und Schemata

Beitrag 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
OOo 3.1 mit WIN XP SP 3 und PostgreSQL 8.2
Antworten