Hallo,
in einem Basic Modul steht im Kopf (also außerhalb einer Sub) folgende Deklaration:
innerhalb eines Makros desselben Moduls wird folgender Code ausgeführt:
Code: Alles auswählen
With dia_adresse.Model
akt_firma = .getByName("cmb_db_firma").Text
akt_abteilung = .getByName("cmb_db_abteilung").Text
akt_strasse .getByName("txt_strasse").Text
akt_plz .getByName("txt_plz").Text
akt_ort .getByName("txt_ort").Text
End With
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oBaseContext.getByName(DB_name) 'DB_name, siehe Modul "_info"
oCon = oDataSource.getConnection(sUser, sPassword)
oStatement = oCon.createStatement()
tmp1 = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"") VALUES ('"+akt_firma+"','"+akt_abteilung+"')"
oStatement.executeUpdate(tmp1)
oCon.close()
dabei resultiert die FEhlermeldung
"BASIC-Laufzeitfehler. Objektvariable nicht belegt." in Zeile:
Code: Alles auswählen
tmp1 = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"") VALUES ('"+akt_firma+"','"+akt_abteilung+"')"
Ändere ich in:
Code: Alles auswählen
Dim sqlSM
sqlSM = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"") VALUES ('"+akt_firma+"','"+akt_abteilung+"')"
oStatement.executeUpdate(sqlSM)
Funktioniert alles einwandfrei.
Beobachtet in LO 5.1.6.2.
Hat jemand eine Erklärung für dieses Verhalten?
Falls es keine Erklärung gibt, ist das beschriebene Verhalten zumindest bekannt?
(Mich hat das gerade über eine Stunde Zeit gekostet, weil ich die ganze Zeit glaubte der SQL-Ausdruck hätte einen inhaltlichen Fehler. Das hingegen der Meldetext der Fehlermeldung inhaltlich falsch war (=es konnte an dieser Stelle nicht an einer unbelegten Objektvariable liegen), war mir sofort klar, nur dieserart Unregelmäßigkeiten ist man ja von OO/LO leider gewohnt.)
Gruß
Stephan