DB Verbindung | Abfrage in Array - Index Fehler

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

Hallo ich habe zwei Fragen.

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?

Code: Alles auswählen

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

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

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)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

Moderation,4: Vollzitat gelöscht


Ich habe eine Base Datenbank mit einer Verbindung zur PostgreSQL Datenbank.
Ich habe PostgreSQL ausgewählt und bin über folgenden Link verbunden.

dbname=swdb host=192.168.0.200 user=joachim password=*****

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

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

MikeRo hat geschrieben:Woran kann das denn liegen?
Wenn Du Berechtigung und (fehlenden) Primärschlüssel ausschliessen kannst:
am Treiber kann das liegen.

Ich arbeite mit JDBC [PostgreSQL 9.0 JDBC4 (build 801); Verbindung: jdbc:postgresql://SERVER:5432/DATENBANKNAME] - und da funktioniert es.
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
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

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

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

Wenn die Tabellen Schlüssel haben, dann ist das nicht die Ursache...
MikeRo hat geschrieben: Aber wenn ich bei klasse org.postgresql.Driver eintrage kommt die Meldung konnte nicht geladen werden.
Hast Du die JAR lokal gespeichert? Im Class Path bei Extras>Optionen...>OpenOffice.org>Java eingetragen?
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
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

komma4 hat geschrieben:Hast Du die JAR lokal gespeichert? Im Class Path bei Extras>Optionen...>OpenOffice.org>Java eingetragen?
Moderation,4: Vollzitat gekürzt


Nein noch nicht, habe aber eine Anleitung gefunden.

http://www.postgresonline.com/journal/a ... reSQL.html

Habe es geschafft, aber kann man das Passwort irgendwie speichern?

Und Danke.

Bei dem anderen Problem hast du auch keine Idee oder?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

MikeRo hat geschrieben:Habe es geschafft, aber kann man das Passwort irgendwie speichern?
Was hast Du geschafft: die JDBC-Installtion, die Verbindung zur Datenbank oder das Ändern der Tabellen?

MikeRo hat geschrieben:Bei dem anderen Problem hast du auch keine Idee oder?
Hatte ich mir zuvor noch gar nicht angesehen...

Dein Makro reagiert auf das Ereignis "Textfeld geändert"?
Kein Wunder, dass der Index durcheinander kommt, wenn Du Buchstaben löschst.

Würde als Auslöser da wohl eher Focus verlassen nehmen
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
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

Ich meine die JDBC Verbindung.

Und das mit dem Fokus werde ich versuchen.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

MikeRo hat geschrieben:Ich meine die JDBC Verbindung.
Dann interessiert uns natürlich auch noch, ob Du nun Tabelleninhalte ändern kannst...
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
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von MikeRo »

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

Re: DB Verbindung | Abfrage in Array - Index Fehler

Beitrag von komma4 »

MikeRo hat geschrieben:wie ich mit dem Makro die Verbindung herstellen soll.

Code: Alles auswählen

oCon = DataSource.GetConnection( "joachim", "meinPasswort" )
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)
Antworten