Ich möchte in einem Makro eine Abfrage ausführen und als Parameter für die Abfrage nicht einen festen Text nehmen, sondern eine Variable, die über einen Dialog gefüllt wird. Mein Versuch bislang:
Egal, was ich mit der Variablenbezeichnung “stDatenquelle” anfange (" / “” / "’ jeweils vorne und hinten, [], <>) wird es entweder als Spalte (die nicht vorhanden ist) oder als string aufgefasst. Was muss man tun? Alternativ: Wie kann man korrekt als Parameter der Abfrage den Inhalt des Dialogfeldes “Datenquelle” auslesen? Kuriosität am Rande: Wenn ich die Zeilen 141 und 142 (natürlich dann mit der 128 statt 127) verwende, bekomme ich die Fehlermeldung "BASIC-Laufzeitfehler.Es ist eine Ausnahme aufgetreten Type: com.sun.star.sdbc.SQLException Message: Fehler in der Funktionsfolge…sSQL_statement = "SELECT * FROM ""tblMineralien"" WHERE ""Name_Mineral""='"+stDatenquelle+"'"
Die Feldbezeichnungen usw. werden mit doppelten Anführungszeichen maskiert. Da ein doppeltes Anführungszeichen innerhalb von Basic aber dazu führt, dass das Ganze als Text interpretiert wird, muss das Anführungszeichen wieder durch ein Anführungszeichen maskiert werden.
Variablen wie Text werden in Abfragen in einfache Anführungszeichen gesetzt. Deswegen endet der Code erst einmal mit einem einfachen Anführungszeichen, dann wird die Variable mit + oder & eingebaut und danach das weitere einfache Anführungszeichen wieder als Text hinzugefügt.
Mach’ zur Probe eine msgbox:
msgbox sSQL_statement
Dann kannst Du sehen, was an die Datenbank weitergegeben wird.
Super, danke. Das mit dem + bzw. & hatte ich nicht auf dem Schirm. Jetzt läuft alles. Witzigerweise funktioniert bei mir das Makro auch, wenn Tabellen- und Feldname nicht in doppelte Anführungszeichen eingeschlossen sind, sondern “ohne alles” da stehen.