Basic: SQL-Aktualisierungsabfragen ausführen lassen, ODBC
Verfasst: So, 22.10.2006 21:05
Hat hier jmd schon mal per ODBC SQL-Statements durchgereicht? Ich meine Aktualisierungsabfragen (z.B. update table1 set rf=0).
Wie lautet die Syntax? Ich meine 1 Beispiel. (Klar, es steht alles in der API-Doku von OO, da ich aber nicht erstens faul bin und zweites nicht mit OO ins Bett gehe (sondern mit meiner Freundin) hier die Bitte an die Gemeinde nach einem ersten Beispiel. Tiefergehendes werde ich mir daraufhin in der Doku suchen.
Übrigens: die Tabellen, die ich manipulieren will, sind schon per ODBC eingebunden. Wenn es also möglich ist eine per ODBC eingebundene Tabelle so zu behandeln wie eine lokale von OO, dann reicht mir (erstmal) auch ein Beispiel für einen solchen Code.
Gruss
Eckard
Nachtrag: habe unter http://www.wienandt.de/seiten/dbklein.htm -> odbc.zip eine "odbc.odb" gefunden mit Code:
DIM's ...
[...]
sURL = "sdbc:odbc:myODBC_Source"
'Aufruf des entsprechenden Service und zuweisen auf Variable
oVerbinder = CreateUnoService("com.sun.star.sdbc.DriverManager")
oConnection = oVerbinder.getConnection(sURL)
'Einstellen der Variable oStatement für den zu sendenden SQL-String an Datenbank
oStatement = oConnection.CreateStatement()
[...]
was auch funktioniert, wenn das nicht die Username und Passwort-Abfrage meiner ODBC-Datenquelle wäre. Es wird beim Versuch der Erstellung einer Verbindung bemägelt, daß ein Username und PAsswort erforderlich ist.
Daraufhin habe ich unter http://docs.sun.com/app/docs/doc/819-13 ... =de&a=view
-> Datenbankzugriff eine Version gefunden wie auf eine lokale, nicht ODBC-Datenquelle zugegriffen werden kann:
Dim DatabaseContext
As Object Dim DataSource
As Object Dim Connection
As Object Dim InteractionHandler
as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
If Not DataSource.IsPasswordRequired
Then Connection = DataSource.GetConnection
("","")
Else InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
Leider gelingt mir es nicht die beiden Verfahren miteinander zu verheiraten. Habe schon viele Kombinationen probiert. Kann das jmd hier?
Gruss
Eckard
Wie lautet die Syntax? Ich meine 1 Beispiel. (Klar, es steht alles in der API-Doku von OO, da ich aber nicht erstens faul bin und zweites nicht mit OO ins Bett gehe (sondern mit meiner Freundin) hier die Bitte an die Gemeinde nach einem ersten Beispiel. Tiefergehendes werde ich mir daraufhin in der Doku suchen.
Übrigens: die Tabellen, die ich manipulieren will, sind schon per ODBC eingebunden. Wenn es also möglich ist eine per ODBC eingebundene Tabelle so zu behandeln wie eine lokale von OO, dann reicht mir (erstmal) auch ein Beispiel für einen solchen Code.
Gruss
Eckard
Nachtrag: habe unter http://www.wienandt.de/seiten/dbklein.htm -> odbc.zip eine "odbc.odb" gefunden mit Code:
DIM's ...
[...]
sURL = "sdbc:odbc:myODBC_Source"
'Aufruf des entsprechenden Service und zuweisen auf Variable
oVerbinder = CreateUnoService("com.sun.star.sdbc.DriverManager")
oConnection = oVerbinder.getConnection(sURL)
'Einstellen der Variable oStatement für den zu sendenden SQL-String an Datenbank
oStatement = oConnection.CreateStatement()
[...]
was auch funktioniert, wenn das nicht die Username und Passwort-Abfrage meiner ODBC-Datenquelle wäre. Es wird beim Versuch der Erstellung einer Verbindung bemägelt, daß ein Username und PAsswort erforderlich ist.

Daraufhin habe ich unter http://docs.sun.com/app/docs/doc/819-13 ... =de&a=view
-> Datenbankzugriff eine Version gefunden wie auf eine lokale, nicht ODBC-Datenquelle zugegriffen werden kann:
Dim DatabaseContext
As Object Dim DataSource
As Object Dim Connection
As Object Dim InteractionHandler
as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Customers")
If Not DataSource.IsPasswordRequired
Then Connection = DataSource.GetConnection
("","")
Else InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
Leider gelingt mir es nicht die beiden Verfahren miteinander zu verheiraten. Habe schon viele Kombinationen probiert. Kann das jmd hier?
Gruss
Eckard