Kann Eigenschaften eines Resultsets nicht ändern

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

Moderator: Moderatoren

Teepoet
Beiträge: 1
Registriert: Fr, 09.10.2009 09:15

Kann Eigenschaften eines Resultsets nicht ändern

Beitrag von Teepoet »

Hallo,
habe nach intensivem Studium eines OOBasic-Buches keine Lösung für mein Problem.
Ich erstelle in einem Basic-Modul, das in einem Base-Formular aufgerufen wird ein Statement-Objekt und ein Resultset.
Nun möchte ich die Eigenschaft ResultsetCurrency auf UPDATABLE
und die Eigenschaft ResultSetType auf SCROLL_SENSITIVE stellen

Dies funktioniert beim übergeordneten Statement-Objekt, wenn ich dies aber beim REsultset mache, kommt folgende Fehlermeldung bei der Ausführung des Makros: "Leseproblem: Eigenschaft ist schreibgeschützt"

Habe im Dev-Forum von OOffice eine Artikel gefunden, wo jemand dasselbe Problem beschreibt. Aber es kann doch nicht sein, dass man in Basic ein ResultSet nicht verändern kann. Oder hab ich was übersehen?
Hier ein Auszug aus meinem Code:

Dim Odbcontext as Object
Dim Odatasource as Object
Dim Stabelle as Object
Dim oConnection as Object
Dim Schlagwortfeld as Object
Dim AbfrageListe as Object
Dim aStatement as Object
Dim bStatement as Object
Dim HauptTabelle as Object
Odbcontext=createUnoService("com.sun.star.sdb.DatabaseContext")
Odatasource=Odbcontext.getByName("FritzHerbstInventar")
STabelle=Odatasource.tables.getByName("SchlagwortListe")
HauptTabelle=Odatasource.tables.getByName("HauptInfos")
oConnection=Odatasource.GetConnection("","")

bStatement=oConnection.createStatement() 'erzeuge Statements
aStatement=oConnection.createStatement()

AbfrageListe=aStatement.executeQuery("Select ""Schlagwort"" FROM ""SchlagwortListe""")
Schlagwortfeld=bStatement.executeQuery("Select * FROM ""HauptInfos""")'wähle nur das, wo Sign gleich ist
Spaltennummer=Schlagwortfeld.findColumn("Schlagworte")

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

Msgbox "Schreibgeschützt Statement:" & aStatement.ResultSetConcurrency & "Typ Statement:" &aStatement.ResultSetType


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

Msgbox "Schreibgeschützt Results:" & AbfrageListe.ResultSetConcurrency & "Typ Resultset:" &AbfrageListe.ResultSetType

*************************************
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Kann Eigenschaften eines Resultsets nicht ändern

Beitrag von eBayer »

Du mußt erst den Typ des Resultset definieren und dann Deine Abfrage starten.
Die fertig erstellte Abfrage, also das mit Daten gefüllte ResultSet kannst Du nach meinem Verständnis nicht verändern.... warum auch?
Du weißt ja vorher, was Du damit vor hast.
Warum machst Du das überhaupt auf diese Weise? Du kannst doch die Daten direkt mit einem SQL-Statement verändern (executeUpdate).
Denk übrigens auch mal darüber nach was ein "executeQuery" bedeutet..... es liegt bereits im Namen - "Abfrage"

bStatement=oConnection.createStatement() 'erzeuge Statements
aStatement=oConnection.createStatement()
aStatement.ResultSetConcurrency=com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE
aStatement.ResultSetType=com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE


AbfrageListe=aStatement.executeQuery("Select ""Schlagwort"" FROM ""SchlagwortListe""")
Schlagwortfeld=bStatement.executeQuery("Select * FROM ""HauptInfos""")'wähle nur das, wo Sign gleich ist
Spaltennummer=Schlagwortfeld.findColumn("Schlagworte")

Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten