Ich habe da ein "kleines" Problem und hoffe mir kann jemand helfen.
Ich brauche eine updatefähige Datenverbindung zu einer Datenbank nur Verlaufen alle Postings zu diesem Thema im Sand und ich komme nicht weiter.
Ich baue an einer Datenbank für Bauteile und muss jetzt unmengen an technischen Daten aus Calc-Tabellen importieren. Da kommt nur ein Makro in Frage, da die manuelle Eingabe Wochen dauern würde
Die Leseverbindung zur Datenbank bekomme ich auch hin, nur beim Update erhalte ich immer folgende Fehlermeldung "...com.sun.star.sdbc.SQLException Message: The result is read-only"
Bei genauerem Überprüfen der Fehlerursache habe ich festgestellt das ich den Eigenschaften des ResultSet (oStatement) im ResultSetConcurrency nicht 1008 bzw. UPDATABLE
und im ResultSetType nicht 1005 bzw. Scroll_Sensitive zuweisen kann. Zumindest wird diese Anweisung igrnoriert
Nur beimResultSetType geht der Wert immerhin auf 1004. Sollte aber auf 1005 springen.
Um dem Fehler Herr zu werden habe ich mir ne kleine Test-DB geschrieben:
Tabelle "Adressen" mit 4 Spalten "ID" "Vorname "Nachname" "Geurtstag".
ID ist gleichzeitig Primäschlüssel.
Die Datenbank enthält 3 Datensätze und im 2. Datensatz soll z.B. der Nachname geändert werden.
Die Bearbeitung der Daten erfolgt über folgende Programmierung
Code: Alles auswählen
Sub Main
Pfad = "H:\...\testZugriffeDB.odb"
Pfad = ConvertToURL(Pfad)
Call DBUpdate(Pfad)
End Sub
Sub DBUpdate(sURL as String)
Dim DatabaseContext as Object
Dim oDatenquelle as Object
Dim oDatVerb as Object 'Objekt für Datenbankverbindung
Dim oStatement as Object 'Objekt für SQL-Kommando-Übertragung
Dim oErgSet as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDatenquelle = DatabaseContext.getByName(sURL)
oDatVerb = oDatenquelle.getConnection("","")
oStatement = oDatVerb.createStatement()
oStatement.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE
'jetzt sollte das oStatement (ResultSetConcurrency) auf 1008 stehen -> macht es aber nicht
oStatement.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
'jetzt sollte das oStatement (ResultSetType) auf 1005 stehen -> steht aber nur auf 1003
sSQL = "SELECT ""Vorname"",""Nachname"" FROM ""Adressen"""
oErgSet = oStatement.executeQuery(sSQL)
oErgSet.absolute(2)
oErgSet.updateString(2, "Müller")
End Sub
Kann mir bitte jemand helfen!