SQL-String liefert Fehlermeldung abhängig von Variablennamen(?)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

SQL-String liefert Fehlermeldung abhängig von Variablennamen(?)

Beitrag von Stephan »

Hallo,

in einem Basic Modul steht im Kopf (also außerhalb einer Sub) folgende Deklaration:

Code: Alles auswählen

Dim tmp, tmp1, tmp2
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