von Stephan » Mo, 21.04.2014 13:48
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:
scheitert und die Fehlermeldung:

- DB-Makro Meldung.gif (9.89 KiB) 1254 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
Hallo,
ich habe eine Datenbankdatei (*.odb) mit integrierter HSQLDB und nutze OOo 3.3.0.
Ich führe folgenden Code aus:
[code]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[/code]
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]oResultSet.deleteRow()[/code]
scheitert und die Fehlermeldung:
[attachment=0]DB-Makro Meldung.gif[/attachment]
erscheint.
Was ist das Problem?
[i]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.
[/i]
Gruß
Stephan