von CADdy » Sa, 12.04.2014 21:44
Hallo allemiteinander,
ich möchte per Makro Datensätze in eine MySQL-Datenbank schreiben, so wie es im LibreOffice 4.2 Base-Handbuch auf Seite 329 beschrieben steht. Das Programm sieht folgendermaßen aus:
Code: Alles auswählen
REM in Datenbank schreiben
Sub datawrite
DIM oDatabaseContext AS OBJECT
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT
DIM stSql AS STRING
DIM iResult AS INTEGER
oDatabaseContext =createUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource =oDatabaseContext.getByName("gta")
oConnection =oDatasource.GetConnection("","")
stSql = "INSERT INTO `gta`.`palettenzettel` " _
& "(`lfdnr`, `scancode`, `palettennr`, `artikelnr`, `menge`, `zeit`, `datum`)" _
& " VALUES " _
& "(lfdnr = NULL, scancode = ?, palettennr = ?, artikelnr = ?, menge = ?, zeit = ?, datum = ?)"
REM Das Feld "lfdnr" ist in der Datenbank "auto_increment" definiert
oSQL_Statement= oConnection.prepareStatement(stSql)
oSQL_Statement.setString(1, lfdnr)
oSQL_Statement.setInt(2, scancode)
oSQL_Statement.setInt(3, palettennr)
oSQL_Statement.setInt(4, artikelnr)
oSQL_Statement.setInt(5, menge)
oSQL_Statement.setTime(6, zeit)
oSQL_Statement.setDate(7, datum)
iResult = oSQL_Statement.executeUpdate
End Sub
Wenn ich das im Einzelschritt durchgehe, funktioniert es bis zur Zeile
Hier bekomme ich die Meldung "BASIC-Laufzeitfehler. Objektvariable nicht belegt."
Ich verstehe nicht, warum das so ist. Ich habe mich genau an die Vorgaben gehalten.
Könnte mir bitte jemand einen Tipp geben, was ich falsch mache?
Danke und servus
Peter
Hallo allemiteinander,
ich möchte per Makro Datensätze in eine MySQL-Datenbank schreiben, so wie es im LibreOffice 4.2 Base-Handbuch auf Seite 329 beschrieben steht. Das Programm sieht folgendermaßen aus:
[code]REM in Datenbank schreiben
Sub datawrite
DIM oDatabaseContext AS OBJECT
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT
DIM stSql AS STRING
DIM iResult AS INTEGER
oDatabaseContext =createUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource =oDatabaseContext.getByName("gta")
oConnection =oDatasource.GetConnection("","")
stSql = "INSERT INTO `gta`.`palettenzettel` " _
& "(`lfdnr`, `scancode`, `palettennr`, `artikelnr`, `menge`, `zeit`, `datum`)" _
& " VALUES " _
& "(lfdnr = NULL, scancode = ?, palettennr = ?, artikelnr = ?, menge = ?, zeit = ?, datum = ?)"
REM Das Feld "lfdnr" ist in der Datenbank "auto_increment" definiert
oSQL_Statement= oConnection.prepareStatement(stSql)
oSQL_Statement.setString(1, lfdnr)
oSQL_Statement.setInt(2, scancode)
oSQL_Statement.setInt(3, palettennr)
oSQL_Statement.setInt(4, artikelnr)
oSQL_Statement.setInt(5, menge)
oSQL_Statement.setTime(6, zeit)
oSQL_Statement.setDate(7, datum)
iResult = oSQL_Statement.executeUpdate
End Sub[/code]
Wenn ich das im Einzelschritt durchgehe, funktioniert es bis zur Zeile
[code]oSQL_Statement.setTime(6, zeit)[/code]
Hier bekomme ich die Meldung "BASIC-Laufzeitfehler. Objektvariable nicht belegt."
Ich verstehe nicht, warum das so ist. Ich habe mich genau an die Vorgaben gehalten.
Könnte mir bitte jemand einen Tipp geben, was ich falsch mache?
Danke und servus
Peter