1. Kann ich eigentlich eine Verbindung zu einer PostgreSQL Datenbank aufbauen ohne Base als Datenquelle zu nutzen? Denn in Base habe ich eine Verbindung hergestellt aber ich kann nur aus der Datenbank lesen und nicht schreiben oder updaten.
2. Ich habe dieses Makro, welches auf die Datenbank zugreift und die Abfrage ausführt. In dem Dialog ist ein Textfeld und ein Listenfeld. Und bei jeder Veränderung des Textfeldes wird die Abfrage ausgeführt. Es soll eben nach Einträgen gesucht werden. Aber es kommt oft vor wenn ich was suche und Buchstaben wieder lösche das der Fehler kommt Index außerhalb des Definierten Bereichs. Woran liegt das?
rem-------------------------------------------------------------------------------------------------------------------------------------Dialog Starten
Dim oDialog as Object
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Zaehler AS Integer
Public eLokal
Sub StammdatenDialog
DialogLibraries.LoadLibrary("Befragungsbogen")
oDialog = createUnoDialog(DialogLibraries.Befragungsbogen.DialogStammdaten)
OS = GetGUIType()
oDialog.execute()
End Sub
Sub DB
If OS = 1 Then 'Windows
DBurl=converttourl("Z:\Programme\Vorlagen für Makros\Datenbankverbindung Testserver.odb")
ElseIf OS = 4 Then 'Unix
DBurl=converttourl("/media/transfer/Programme/Vorlagen für Makros/Datenbankverbindung Testserver.odb")
End IF
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName(DBurl)
oCon = DataSource.GetConnection("","")
End Sub
Sub StammdatenAnzeige
Call DB
eLokal = oDialog.getControl("EingabeLokal").text
oStatement = oCon.createStatement()
oListenAbfrage = oStatement.executeQuery("SELECT ""name"" FROM ""public"".""outlet"" WHERE UPPER(""name"") LIKE UPPER('%"& eLokal &"%')")
aListe = array()
Zaehler = 0
If not isNull(oListenAbfrage) Then
Do while oListenAbfrage.Next
ReDim Preserve aListe(Zaehler)
aListe(Zaehler) = oListenAbfrage.getString(1)
Zaehler = Zaehler + 1
Loop
End IF
aLokal = oDialog.getControl("AusgabeLokal")
aLokal.removeItems(0, aLokal.getItemCount())
aLokal.addItems(aListe, 1)
End Sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
MikeRo hat geschrieben:1. Kann ich eigentlich eine Verbindung zu einer PostgreSQL Datenbank aufbauen ohne Base als Datenquelle zu nutzen? Denn in Base habe ich eine Verbindung hergestellt aber ich kann nur aus der Datenbank lesen und nicht schreiben oder updaten.
Nein, BASE ist das Bindeglied zwischen einer Datenbank-engine und OOo. Ohne das geht nichts.
Du kannst auf alle Tabellen der DB nur lesend zugreifen?
Hast Du einen Schlüssel (primary key) für die betroffene(n) Tabelle(n) definiert?
Überprüfe die Benutzerberechtigungen!
Welche OOo-Version?
Welches Betriebssystem?
Welcher Datenbank-Treiber?
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)
Der User Joachim hat alle Rechte und Vollzugriff. Denn über PGAdmin kann ich mit dem User auch Einträge verändern und löschen, aber mit der BaseDatenbank nicht. Woran kann das denn liegen?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Was meinst du genau mit dem Primärschlüssel? Die DB zu der ich verbinde ist unsere in der Firma und da sind hunderte von Tabellen. Da hat natürlich jede Tabelle einen Primärschlüssel.
Aber wenn ich bei klasse org.postgresql.Driver eintrage kommt die Meldung konnte nicht geladen werden.
Zuletzt geändert von MikeRo am Mo, 12.09.2011 17:35, insgesamt 2-mal geändert.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Ja ich kann mit der JDBC Verbindung Tabelleninhalte verändern, allerdings kann ich leider das Passwort nicht speichern und somit weiß ich gerade nicht wie ich mit dem Makro die Verbindung herstellen soll.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86