Base-Datenbank, kein schreibbares Resultset

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Base-Datenbank, kein schreibbares Resultset

Beitrag von Stephan »

Hallo,

ich habe eine Datenbankdatei (*.odb) mit integrierter HSQLDB und nutze OOo 3.3.0.

Ich führe folgenden Code aus:

Code: Alles auswählen

Sub aufruf()
DB-Bearbeiten("Firmentabelle", "Firmenname")
End Sub

Sub DB-Bearbeiten(datenbank, feldbezeichner)

oDaten = createUnoService( "com.sun.star.sdb.DatabaseContext" )
DbName = ThisDatabaseDocument.DataSource.Name
oDatenquelle = oDaten.getByName(DbName)
oVerbindung = oDatenquelle.getConnection( "", "" )
oStatement = oVerbindung.createStatement()

oStatement.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
oStatement.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE

oResultSet = oStatement.executeQuery("SELECT * FROM " & datenbank & " ORDER BY " & feldbezeichner & " ASC" )

Msgbox oResultSet.ResultSetConcurrency

oResultSet.first()
Do While Not oResultSet.isAfterLast
  oResultSet.deleteRow()
  oResultSet.next
Loop

End Sub

Die Rückgabe in der Messagebox ist dabei 1007, womit klar ist das das Resultset nur read only ist, weshalb auch beim Versuch ein Satz des Resultsets per:

Code: Alles auswählen

oResultSet.deleteRow()
scheitert und die Fehlermeldung:
DB-Makro Meldung.gif
DB-Makro Meldung.gif (9.89 KiB) 1244 mal betrachtet
erscheint.

Was ist das Problem?

Hinweis:
das adäquate Makro funktioniert mit einer Datenbank die auf eine DBase-Datenquelle verknüpft ist (ich benutze hierfür testweise die Bibliographie-Datenbank von OO) fehlerfrei.




Gruß
Stephan
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Base-Datenbank, kein schreibbares Resultset

Beitrag von DPunch »

Servus

Siehe Issue 77865 ResultsetType and ResultSetConcurrency do not change
The problem is that HSQL in version 1.8.* does not support updatable result sets (IIRC, 1.9.* will support them). The result set type and concurrency are silently downgraded, which is allowed by both the JDBC and the SDBC API (though we in fact encountered drivers in the past which did no silent downgrading, but instead raised an exception).
Wenn man, wie dort vorgeschlagen, auf ein com.sun.star.sdb.RowSet zurückgreift, kann man auch direkt darüber Änderungen durchführen, so zumindest meine Erfahrungen.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Base-Datenbank, kein schreibbares Resultset

Beitrag von Stephan »

Hallo DPunch,

danke für die Antwort die ich erst jetzt sehe, weil mich jemand Anderes darauf hinwies. Ich muss mir das ansehen.


Gruß
Stephan
Antworten