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

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

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

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

Beitrag von Stephan » Mi, 04.10.2017 08:39

Hallo,

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

Code: Alles auswählen

Option Explicit
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

Toxitom
********
Beiträge: 3399
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

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

Beitrag von Toxitom » Mi, 04.10.2017 09:47

Hey Stefan,

ohne es direkt zu testen oder es exakt zu wissen:

Die Fehlermeldung kann schon korrekt sein - die Problematik liegt meiner Ansicht nicht in deiner Code-Logik - sondern in den Bezeichnern "tmp", "tmp1" und "tmp2".

Teste das Ganze mal in dem Du andere Variablennamen wählst. z.B. "myTmp" oder so. Ich habe öfter mal die Erfahrung gemacht, dass manche Bezeichnernamen intern verwendet werden und dies dann genau zu solchen Verhalten führt. Leider sind die nicht dokumentiert - die intern verwendeten Variablen-Namen ... aber bei "tmp" und "tmp1" würden bei mir die Alarmglocken klingeln.....

ne Versuch wäre es wert....

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 5- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste